___ ___ ___ ___ ___ /\ \ /\ \ /\ \ /\ \ /\ \ //\\ \ //\\ \ //\\ \ //\\ \ //\\ \ ///\\\ \ ///\\\ \ ///\\\ \ ///\\\ \ ///\\\ \ /// \\\ \ /// \\\ \ /// \\\ \ /// \\\ \ /// \\\ \ /// / \\\ \ /// / \\\ \ /// / \\\ \ /// / \\\ \ /// / \\\ \ ///__/ \\\__\ ///__/ \\\__\///__/ \\\__\///__/ \\\__\///__/ \\\__\ \\\ \ ___\/__/ \\\ \ ___\/__/\\\ \ \/__/\\\ \ \/__/\\\ \ \/__/ \\\ \/\ \ \\\ /\ \ \\\ \ \\\ \ \\\ \ \\\ \\\ _\ \\\ \\\__\ \\\ \ \\\ \ \\\ \ \\\/// / \\\/// / \\\ \ \\\ \ \\\ \ \\// / \\// / \\\__\ \\\__\ \\\__\ \/__/ \/__/ \/__/ \/__/ \/__/ TM GAME GENIE CODE CREATORS CLUB | SUPER NINTENDO GAME GENIE HANDBOOK, ver. 7.00 ============================================================================== | (c) 1995, 1996, 2000 Game Genie Code Creators | Club. All rights reserved. This material may -===WRITTEN BY===- | not be reproduced, stored in a retrieval Sam Volo | system, transmitted, or published, in any form (fallen_one@iname.com) | or by any means-- electronic, mechanical, | xerographic, or otherwise-- without being -=====DATE=====- | fully credited or without the prior written 09 July, 2000 | permission of a club official. E-mail | fallen_one@iname.com or strato508@aol.com for | more information. ============================================================================== This file is best viewed in a monospace font such as Courier. Optimized for viewing in the MS-DOS Editor. ********************* * TABLE OF CONTENTS * ********************* Part 1 : Introduction Part 2 : Credits 2.1 Credits 2.2 Revision History Part 3 : Notes 3.1 Things to Remember 3.2 What's New in this Version? BASICS: This section is for people who don't know a thing about making ------- Game Genie codes. Part 4 : Why Some Codes Don't Work Part 5 : Conversion Chart Part 6 : Patience is a Virtue Part 7 : Creating & Altering Codes 7.1 Introduction 7.2 Creation Method: GUESS 'N' OBSERVE 7.3 Creation Method: PORTING OVER 7.4 Creation Method: ALTERED GUESS 7.5 Alteration Method: KNOWLEDGEABLE GUESS 7.6 Alteration Method: SLOTS ONE AND TWO 7.7 Alteration Method: MAKE IT BETTER Part 8 : Chaos and Order 8.1 Introduction 8.2 Code Finding Sheet 8.3 Code Altering Sheet Part 9 : Effect Meter BEYOND THE BASICS: This section is for people who know the basic ------------------ fundamentals of the Game Genie and wish to delve deeper into its inner workings. Part 10 : Hex Marks the Spot 10.1 Introduction 10.2 Hex Counting 10.3 What's in a Code? 10.4 Numerical Value Chart 10.5 Examples of Decoding the First Two Digits Part 11 : Bits, Bytes, and Binary 11.1 Introduction 11.2 Bits & Bytes 11.3 Numerical Chart: The Sequel Part 12 : Breaking the Cypher 12.1 Introduction 12.2 The CPU Address; Game Genie -> PAR conversion * 12.3 Finding the ROM Address: HiROM games * 12.4 Finding the ROM Address: LoROM games * 12.4.1 From CPUaddress to ROMaddress * 12.4.2 From ROMaddress to CPUaddress * 12.5 Example from a HiROM Game * 12.6 Example from a LoROM Game * Part 13 : An Easier Way to Decode 13.1 Introduction 13.2 Tips for altering codes 13.3 Actual values of the slots * 13.4 What's worth what? The Master Chart! * 13.5 Example using the Chart 13.6 Converting Back: from ROM Address to GG Code * Part 14 : Company Hex Methods 14.1 Introduction 14.2 Company Hex Method Chart Part 15 : Words from the Wise 15.1 \ to > Tips on Code Creation 15.7 / Part 16 : Anatomy of the FF3 Code 16.1 Introduction 16.2 Memory Address Positions 16.3 Disassembling a Code Part 17 : Final Word * indicates material revised for version 7.0 ************************** * PART 1: INTRODUCTION * ************************** Well, the SNES Game Genie has pretty much faded in popularity over the past few years, but it has experienced somewhat of a resurgence due to the emulation craze (which, incidentally, neither the author nor the Game Genie Code Creators' Club condone. Emulation is illegal.). I realized that there was some inaccurate information in here, and since people might actually be _reading_ it, I decided to give it one, final update, to correct some of the errors in the previous version concerning the ROMaddress conversion in LoROM games. Moreover, I removed a couple of the sections which dealt with 'voodoo code creation' -- these sections, mostly written by LordRokol many years ago before we understood just how the GG worked, talked about how changing certain GG slots would correlate with certain effects in the game. These observations were pretty much inaccurate -- a GG code is merely a pointer to a memory address. I've still left some of this speculative information in the beginners' section, though, as it may be helpful to those just beginning to create GG codes. It's really incredible how much this file has progressed since the original version was published back in late 1995 -- we've gone from having almost no knowledge of how the Game Genie knowledge to totally understanding it and its relationship to the game's ROM and to other cheat devices. -- Sam Volo fallen_one@iname.com GGCCC co-president ******************* * PART 2: CREDITS * ******************* <2.1> Credits --------------------------------------------------------------- Writers and contributors to the handbook: Sam Volo (fallen_one@iname.com) Roque Cabagnot (LrdRokoL@aol.com) Jack Weaver (strato508@aol.com) gervase@azstarnet.com starfox@earthcorp.com LuKaSX@aol.com Scmche19@mirage.skypoint.com mortimer_@hotmail.com provided the bit-encoding information for GG Code to CPU Address conversion, and the method for CPUAddress to ROMAddress conversion in LoROM games. and devised the method for CPUAddress to ROMAddress conversion in HiROM games. <2.2> Revision History------------------------------------------------------- VERSION 7.0 (July 2000) - Updated the section on CPUaddress to ROMaddress conversion; removed extraneous sections such as 'Infinite or illiterate?' and 'Using the slots'. [by fallen_one@iname.com] VERSION 6.6 (November 1998) - New, easier-to-understand section on Game Genie to ROMAddress conversion. Also added a section on how to reverse the process more easily. Revised other parts of the handbook; reorganized the handbook into sections. [by fallen_one@iname.com] VERSION 6.0 (September 1998) - This version was the first to contain methods of finding the CPU / ROM addresses for Game Genie codes. It's the only document I know of that specifies how to convert GG codes to ROM addresses. [by fallen_one@iname.com] VERSION 5.0 (June 1998) - Corrected many of the errors in Rokol's previous handbooks, but still had many errors. [by fallen_one@iname.com] VERSION 4.0 (December 1996) - One of Rokol's last contributions to the GGCCC, this guide contained information from some "source" he had at Galoob. Some of it was legitimate, but some of it was inaccurate. [by lrdrokol@aol.com] VERSION 3.3 (October 1996) - Rokol corrected some (though not all) of the errors in his 3.0 version. [by lrdrokol@aol.com] VERSION 3.0 (June 1996) - In this version, Rokol introduced the 'advanced' section, with the first allusions to the fact that a code altered a memory address. At this point, our knowledge was still very sketchy. First use of the "D, 0, 6, A", "F, 9, B, 2", etc. patterns for positions 5 / 7 in the handbook. [by lrdrokol@aol.com] VERSION 2.0 (April 1996) - Included the data values for the first two positions of the codes (although somewhat incorrectly :P). First use of the name 'handbook' here. [by lrdrokol@aol.com] VERSION 1.5 (November 1995) - Corrected some errors in version 1.0. [by lrdrokol@aol.com] VERSION 1.0 (October 1995) - The GGCCC's first attempt at a Game Genie Guide. Rokol wrote down the techniques (mostly based on guessing and observation). [by lrdrokol@aol.com] * Check out our web site at http://www.ggccc.com/ * Read this document and want to join the GGCCC? Check out our web site for details. ***************** * PART 3: NOTES * ***************** <3.1> Things to Remember---------------------------------------------------- -Please keep in mind that some methods/techniques in this guide may not work with some games. -Some code examples and the Galoob effects chart are taken from Galoob's Codebook and Programming Manual. -Terms used in this guide: GG - Game Genie Alphanumerics - Letter(s)/number(s) (in a GG code) Position(s) - One or more of the slots in the 8 character GG code. Slot(s) <3.2> What's new in this version?------------------------------------------- v7.0 -Revisions to many sections in parts 12 and 13; removal of what were parts 14 and 15; corrections and minor grammar fixes ************************************* * PART 4: WHY SOME CODES DON'T WORK * ************************************* An editorial written by LrdRokol@aol.com What you are about to read is my PERSONAL OPINION and the information that a Galoob Game Genie representative has given me. I have been receiving complaints from people about codes not working on their game. Based on my experience and other sources, I will explain why some codes don't work for your game. You see, Nintendo sued Galoob many years ago, to try to stop Galoob from creating their Game Genie. Nintendo lost the lawsuit. Nintendo changes the configuration of their games. I made this observation after buying another Final Fantasy 3 game. I have noticed that there are still codes that won't work for both of them. That led me to believe that Nintendo is creating different versions of the games they make. They are doing this to either fix the bugs in their games and to frustrate Galoob from finding more codes. ****************************** * PART 5: CONVERSION CHART * ****************************** Are you having problems getting a code to work? Well, it may be that you have a different version of the game. However, you can make that code compatible by using the "CONVERSION CHART". CONVERSION CHART ---------------- D <------> 6 0 <------> A F <------> B 9 <------> 2 4 <------> C 7 <------> 3 7 <------> 8 5 <------> E To make a code work for you, all you have to do is to change the 3rd slot of a code to the equivalent alphanumeric on the conversion chart. EXAMPLE: -------- CODE: EEC4-EDD8 "255 damage to enemy" If the code doesn't work try changing the "C" into a "4". So, the new code is... EE44-EDD8. ******************************** * PART 6: PATIENCE IS A VIRTUE * ******************************** Finding GG Codes is not an easy job. It takes a lot of time and patience. Following the list below will help make your code programming experience more enjoyable. 1. Do not work for more than an hour in finding codes. That is a major cause of stress. If you are going to work more than an hour, take a fifteen minute break for every hour you work on codes. 2. Turn the game music down and play some other music (music you like). Listening to the same tune over and over will drive you crazy. 3. Make yourself comfortable, but not too much. Being too comfortable might cause you to fall asleep! 4. Turn the brightness of your TV down. Looking at a bright screen too long is not good for your eyes. It also puts you to sleep. 5. Have something else to do while you are looking for codes so you don't get bored too fast. 6. Most importantly, do not get mad when you can't find codes... chances are you may have even worse luck. You are a better programmer when you are not mad or stressed. 7. If you have more than one GG, use it. Using more than 1 GG is helpful because it increases the amount of codes you can enter each time. But, don't use more than 3 GG's. Using more than 3 GG's will only serve to confuse you. ************************************* * PART 7: CREATING & ALTERING CODES * ************************************* <7.1> Introduction----------------------------------------------------------- The methods explained in this section rely on guessing and identification in patterns of codes to make new ones. This will probably be how you make most of the best codes... the best things always seem to come randomly. Mathematical (and therefore more precise) methods of finding codes are explained in the "Advanced" section of the handbook. * CODE CREATION METHODS: A. Guess 'N' Observe B. Porting Over C. Altered Guess * ALTERATION METHODS: A. knowledgeable Guess B. Slot 1 and 2 C. Make it Better <7.2> Creation Method: GUESS 'N' OBSERVE------------------------------------- Depending on your luck, you can either find codes or nothing. To use this method, all you do is put random alphanumerics down and check if it changes anything in the game. Easy? Yup, but it all depends on your luck. <7.3> Creation Method: PORTING OVER------------------------------------------ This is when you take codes from one game and port them over to another version of the game. For example, take codes from MegaMan X and plug it into MegaMan X2. Due to many versions of games this method might not work at all. NOTE: This, however, works well with GameBoy GG Codes. <7.4> Creation Method: ALTERED GUESS----------------------------------------- This is probably the most useful of the random methods. You actually know what a code does and try to make new ones by changing it through guesses. EXAMPLE: ****-7765 <---- means "AFFECTS BATTLE" in Chrono Trigger. So, making this observation you can make guesses on the first 4 slots of the code. Here are some of the results of this method. - 9DA6-7765 "INFINITE M.P. FOR THE FIRST CHARACTER" - B623-7765 "9999 DAMAGE" <7.5> Alteration Method: KNOWLEDGEABLE GUESS--------------------------------- Sometimes looking at a set of codes will show you what you need to change to get different effects. EXAMPLE: "Soldiers of Fortune" - DF40-ED75 "BRIGAND STARTS WITH BOMB SPECIAL" - DF40-EF75 "MERCENARY STARTS WITH BOMB SPECIAL" - DF40-E475 "GENTLEMAN STARTS WITH BOMB SPECIAL" You will notice that slot 6 is changed to affect different people. Knowing this, you can guess that changing slot 6 can be changed for different effects. <7.6> Alteration Method: SLOTS ONE AND TWO----------------------------------- Changing slots 1 and 2 is the easiest way to find codes. EXAMPLE: "Paladin's Quest" - **EA-6F1D "CHANGE ITEM IN CHENZI'S RIGHT ARM" You will notice that putting any alphanumerics in slots 1 and 2 will give Chenzi any possible items on his right arm. <7.7> Alteration Method: MAKE IT BETTER-------------------------------------- Galoob creates codes to help make a game easier to play for you, not make you a god. But you can change that just by upgrading the codes that Galoob has provided. EXAMPLE: "Lagoon" - D42D-6D6C "START WITH 612 G.P." - D92D-6D6C "START WITH 1380 G.P." Try changing slots 1 and 2 to "EE". Trust me, you will be surprised by the results. Here is a chart that shows the difficulty of creating codes with the above methods. Method Create or Alter? Difficulty -------------------------------------------------------------------------- Guess 'n' Observe Create Very Hard Porting Over Create Hard Altered Guess Create Relatively Easy Knowledgeable Guess Alter Easy Slot 1 and 2 Alter Very Easy Make it Better Alter Very Easy *************************** * PART 8: CHAOS AND ORDER * *************************** <8.1> Introduction----------------------------------------------------------- When you create or alter codes, you should at least have a little organization so you don't have to worry about losing or misplacing codes. I'm not telling you to copy my procedures for organization. But to observe, how I keep my codes organized and probably help you develop your own method of organization. <8.2> Code Finding Sheet: SNES----------------------------------------------- NAME:_______________________________ | CODE | EFFECT /ALTER/FINAL/NONE | |______|______|__________________________________________|_____|_____|______| |______|______|__________________________________________|_____|_____|______| |______|______|__________________________________________|_____|_____|______| |______|______|__________________________________________|_____|_____|______| |______|______|__________________________________________|_____|_____|______| |______|______|__________________________________________|_____|_____|______| |______|______|__________________________________________|_____|_____|______| SLOTS: --------------------------------------------------------------------------- | 1234 | 5678 | A BRIEF DESCRIPTION OF THE EFFECT /ALTER /FINAL /NONE | --------------------------------------------------------------------------- KEYS: ALTER -Can be altered to create more new codes. FINAL -Does no need to be altered. NONE -No visible effects EXAMPLE: -------- NAME: Lagoon | CODE | EFFECTS /ALTER /FINAL /NONE ------------------------------------------------------|------|------|------ | 4D2D | 6D6C | Start with 8292 GP. |******| | | --------------------------------------------------------------------------- NOTE: You can alter this to give you max GP. <8.3> Code Altering Sheet: SNES---------------------------------------------- NAME:_______________________________ | CODE | EFFECT |_|_|_|_|_|_|_|_|___________________________________________________________| |_|_|_|_|_|_|_|_|___________________________________________________________| |_|_|_|_|_|_|_|_|___________________________________________________________| |_|_|_|_|_|_|_|_|___________________________________________________________| |_|_|_|_|_|_|_|_|___________________________________________________________| |_|_|_|_|_|_|_|_|___________________________________________________________| |_|_|_|_|_|_|_|_|___________________________________________________________| |_|_|_|_|_|_|_|_|___________________________________________________________| |_|_|_|_|_|_|_|_|___________________________________________________________| WAYS TO USE IT: Method 1: Altering A Slot NAME: Mega Man X |1|2|3|4|5|6|7|8| EFFECT --------------------------------------------------------------------------- |D|B|B|E|4|4|6|F|____Start with 10 Lives____________________________________| |*|D|*|*|*|*|*|*|____Start with 1 Life______________________________________| Method 2: Altering Several Slots NAME: Super Metroid |1|2|3|4|5|6|7|8| EFFECT --------------------------------------------------------------------------- |C|2|8|8|C|5|A|7|_Almost Infinite Missiles__________________________________| |*|*|*|A|*|9|D|*|_Almost Infinite Super Missiles____________________________| ************************ * PART 9: EFFECT METER * ************************ The Game Genie uses an effect meter to determine the extremity of the first two positions. This is in the manual, but is also reprinted below for convenience. Example: DAFFY DUCK: THE MARVIN MISSIONS GAME DBBD-1DA4 Start with 9 lives 49BD-1DA4 Start with 25 lives 17BD-1DA4 Start with 99 lives The meter is below: ---------------------------------------------------------------------------- D F 4 7 0 9 1 5 6 B C 8 A 2 3 E Smallest Effect Biggest Effect ---------------------------------------------------------------------------- NOTES: ------ Some games might reverse the Effect Chart. For instance, there are some codes for Final Fantasy II in which "D" will produce the largest effect and "E", the smallest. The effects chart is actually an encoding system for hex numbers. This concept is explained further in the "advanced" section. Now that you have "working" codes (or if you already have codes), you'll probably want to alter them so something cool happens. The charts and examples below will help you figure out what you are doing. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ============================ BEYOND THE BASICS ============================= ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ******************************* * PART 10: HEX MARKS THE SPOT * ******************************* <10.1> Introduction----------------------------------------------------------- Note: The letter "h" after a number or the character "$" before a number indicates that number is in base 16 (hexadecimal). It is not actually a part of the value; it merely distinguishes it from a decimal number. Each Game Genie code is like an encoded hexadecimal number. Hexadecimal is a base 16 number system, with the digits 0 through 9 and A through F. Instead of "9" having the largest value like in our decimal system, Fh has the largest value. <10.2> Hex Counting----------------------------------------------------------- If you were to count in hexadecimal, the sequence would be: 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 21, 22, .... [all h] Ah is equivalent to 10, Bh = 11, Ch = 12, Dh = 13, Eh = 14, and Fh = 15. Because there are 15 numbers (excluding 0) before "10" in hexadecimal, 10h is equal to 16. Therefore, instead of having the "ones", "tens", "hundreds", and "thousands" place like in base 10, we have the "ones", "sixteens", "256s", and "4096s". The number "5" in the number 50h is actually worth 16 x 5 = 80. "8" in 8A0h is worth 256 x 8 = 2048. Let's try to decode the hex number 3E5h. TWO-HUNDRED FIFTY-SIXES SIXTEENS ONES ----------------------- -------- ---- Hex Number 3 E 5 Dec Number 3 14 5 Dec Value 256 x 3 = 768 16 x 14 = 224 5 = 1 x 5 To get the total value of the number, add the decimal values of all the places together. Total Value = 768 + 224 + 5 = 997. <10.3> What's in a Code?------------------------------------------------------ Why are we learning about hexadecimal? Because the a Game Genie code is actually an encoded, 8-digit hexadecimal number. Before we get to what, exactly, each digit of that number represents, we must break the GG's encyphering scheme. The "effect chart" mentioned in the above part is actually a substitution cypher that the GG uses to encode memory addresses. This code is ALWAYS the same; even though the effects chart can be reversed, this is due to the game's setting a factor to "LOWER NUMBER = MORE EFFECT". Everything in a game is controlled by a number, or a combination of numbers. Here, now, is the Game Genie's encoding scheme. Since you will most often use direct numerical substitution with the first two alphanumerics, there are columns on the chart which indicate those digits' values. In a code XY00-0000, X + Y = the value of the first two digits. <10.4> Numerical Value Chart-------------------------------------------------- VALUES: (X) (Y) GG HEX DECIMAL 1ST 2ND -- --- ------- --- --- D 0h 0 0 0 F 1h 1 16 1 4 2h 2 32 2 7 3h 3 48 3 0 4h 4 64 4 9 5h 5 80 5 1 6h 6 96 6 5 7h 7 112 7 6 8h 8 128 8 B 9h 9 144 9 C Ah 10 160 10 8 Bh 11 176 11 A Ch 12 192 12 2 Dh 13 208 13 3 Eh 14 224 14 E Fh 15 240 15 <10.5> Examples of Decoding the First Two Digits------------------------------ E2 = 253 X = E = 240 | 17 = 99 X = 1 = 96 Y = 2 = 13 | Y = 7 = 3 X + Y = 253 | X + Y = 99 ----------------------------------------------------------------------- 10 = 100 X = 1 = 96 | A6 = 200 X = A = 192 Y = 0 = 4 | Y = 6 = 8 X + Y = 100 | X + Y = 200 ********************************** * PART 11: BITS, BYTES, & BINARY * ********************************** * Note: if you don't understand this, don't worry! You can still decode GG codes using only hexadecimal. Read on for more information! <11.1> Introduction----------------------------------------------------------- Binary is a base 2 number system. The only possible values for each place are the two digits 0 and 1. Binary is valuable because a series of electrical switches can display any binary value (where "1" [on] corresponds to the time when there is current flowing through the switch and "0" [off] corresponds to the time when no current flows. Counting in binary would go as follows: 0, 1, 10, 11, 100, 101, 110, 111, 1000, .... <11.2> Bits & Bytes----------------------------------------------------------- One binary digit is known as a "bit". A "bit" can have two possible states: 0 (low) or 1 (high). Each Game Genie code is actually composed of a 24-bit encoded memory address (e.g., 100011011001111100101011), and 8-bit encoded data (e.g., 11001001) -- don't worry about this for now; you'll understand it later. Eight bits are known as a "byte". A byte is also the amount of information that two hex digits (the first two digits of a Game Genie code) can store -- 256 different values. If two hex digits can store a byte, than each individual hex digit represents a 4-bit binary sequence. The digits of the Game Genie can be further broken down into their binary equivalents: <11.3> Numerical Chart: The Sequel-------------------------------------------- GG HEX DECIMAL BINARY -- --- ------- ------ D 0h 0 0000 F 1h 1 0001 4 2h 2 0010 7 3h 3 0011 0 4h 4 0100 9 5h 5 0101 1 6h 6 0110 5 7h 7 0111 6 8h 8 1000 B 9h 9 1001 C Ah 10 1010 8 Bh 11 1011 A Ch 12 1100 2 Dh 13 1101 3 Eh 14 1110 E Fh 15 1111 ********************************* * PART 12: BREAKING THE CYPHER * ********************************* <12.1> Introduction----------------------------------------------------------- Each Game Genie Code represents a 24-bit memory address in the game (the last 6 digits of the code), as well as 8-bit data with which the value of that memory address is set. <12.2> The CPU Address; Game Genie to PAR conversion-------------------------- This is where things start to get a little complex. In the Game Genie code, Galoob has created a double substitution cypher. The first step is switching from Game Genie Hex to normal hex. The table just above this section will allow you to do that. So, if you have the Game Genie Code DF47-E76D, that becomes 0123-F380 in normal hex. The next step is to drop the first two digits (the value, in this case it's 01), but REMEMBER them; you'll need it later. Now you have a six-digit hex number, $23F380. Then, convert the six-digit hex number into binary. You should get a 24-bit binary number. Append zeroes to the beginning until the number is 24 bits: $23F380 = 1000111111001110000000 = 0010 0011 1111 0011 1000 0000 Now, this binary number is ALSO encoded (damn those people at Galoob! How hard were they trying to make it?). You have 24 digits, arranged in this order and labelled "a" through "x": 00100011 11110011 10000000 ijklqrst opabcduv wxefghmn : 24-bit encoded data. Shift the bits around, and rearrange them in this order: abcdefgh ijklmnop qrstuvwx : 24-bit decoded data. 11000000 00100011 00111110 Convert this number to hex ($C0233E), and what you have is known as the CPU ADDRESS. This, incidentally, is also the equivalent Pro Action Replay code for your Game Genie code. <12.3> Finding the ROM Address: HiROM Games--------------------------------- Before you proceed any further towards decoding your Game Genie code to an actual address in the game's ROM, you need to know what kind of game you're dealing with -- HiROM or LoROM. This information is usually within the ROM itself, though it can be hard to locate. Some emulators, such as the old, Windows-based SNES97, will display the HiROM / LoROM information upon the opening of a ROM image to play (note: neither the author nor the GGCCC endorses the use of emulators, which are, in most cases, illegal). * If the game uses the HiROM memory system (usually newer games), the CPUaddresses you find will be between $C00000 and $FFFFFF (or, more rarely, between $400000 and $7FFFFF). Because there is a correlation between consecutive ROMaddresses and consecutive CPUaddresses in HiROM games, conversion is relatively easy. Merely subtract the $C00000 (if the CPUaddress is between $C00000 and $FFFFFF) or the $400000 (if the CPUaddress is between $400000 and $7FFFFF). Then, add back $200 for the 512-byte ROM header. So, for a HiROM game, If $C00000 <= CPUaddress <= $FFFFFF, then ROMaddress = CPUaddress - $BFFE00 CPUaddress = ROMaddress + $BFFE00 If $400000 <= CPUaddress <= $7FFFFF, then ROMaddress = CPUaddress - $3FFE00 CPUaddress = ROMaddress + $3FFE00 <12.4> Finding the ROM Address: LoROM Games----------------------------------- HiROM conversion was relatively simple. LoROM conversion is not so easy. This stems from the fact that the CPUaddresses do not correlate with consecutive addresses in the ROM for LoROM games. LoROM CPUaddresses start from either $808000 or (more rarely) $008000. But while the second digit of the ROMaddress increases every 32K (as is normal), the second digit of the CPUaddress increases every _16K_. That is, ROMaddresses $000000 to $007FFF correspond to CPUaddresses $808000 to $80FFFF; ROMaddresses $008000 to $00FFFF correspond to CPUaddresses $818000 to $81FFFF; ROMaddresses $010000 to $017FFF correspond to CPUaddresses $828000 to $82FFFF; and so on. This pattern, while predictable, makes CPUaddress -> ROMaddress conversion a more complex process. The reason for the pattern lies in the fact that for LoROM games, _bit 15 of the CPUaddress is always high_. In other words, the CPUaddress is converted into a 24-bit binary number, the sixteenth bit from the right will always be a "1" (bits are numbered from right to left, starting with 0). This creates the effect of making the third hex digit in the CPUaddress always between 8 and F. Take, for example, the address $81D2F4: 8 1 D 2 F 4 Note that the bit labelled "A15" 1000 0001 1101 0010 1111 0100 is always a "1". Looking at the ----------------------------- chart in <11.3>, you can see that AAAA AAAA AAAA AAAA AAAA AAAA B this restricts the values of the 2222 1111 1111 11 I third hex digit to between 8 and F. 3210 9876 5432 1098 7654 3210 <-T * Note: from here on, the notation "bit 15" will be replaced with "A15", which is the traditional way to refer to bits in an address. <<12.4.1>> From CPUaddress to ROMaddress------------------------------------- To properly convert LoROM CPUaddresses into ROMaddresses and vice versa, it is necessary to do some bitwise Boolean operations. In case the reader is not familiar with these, we take a moment to review them here: Bitwise AND: If both operands are high, the result bit is high. Otherwise, it is low. Consider each bit individually. 0 AND 0 = 0 1010 AND 1001 = 1000 0 AND 1 = 0 1 AND 0 = 0 1 AND 1 = 1 $1E3 AND $276 = (0001 1110 0011) AND (0010 0111 0110) = 0000 0110 0010 = $062. Bitwise OR: If either operand is high, the result is high. If neither operand is high, the result is low. Consider each bit individually. 0 OR 0 = 0 1010 OR 1001 = 1011 0 OR 1 = 1 1 OR 0 = 1 1 OR 1 = 1 $1E3 OR $276 = (0001 1110 0011) AND (0010 0111 0110) = 0011 1111 0111 = $3F7. The equations make use of two additional operations: shl(x): Shift all bits (x) bits to the right, appending a 0 to the left of the highest-valued bit (since we are working with 24-bit sequences, this means that A23 will become 0). shr(x): Shift all bits (x) bits to the left, appending a 0 to the right of the lowest-valued bit (i.e., A0 becomes 0). Now, the equation to convert CPUaddress to ROMaddress for a LoROM game: ------------------------------------------------------------------------- | ROMaddr = ((CPUaddr and $7FFF) or ((CPUaddr and $FF0000) shl 1)) + $200 | ------------------------------------------------------------------------- It's easy enough to do the bitwise operations by hand, and you can perform the hex conversions using a good scientific calculator (or the calculator that comes with Windows). Here's an explanation of what the equation does. Let's say you have a 24-bit CPUaddress, abcd efgh ijkl mnop qrst uvwx * "CPUaddr & $7FFF" will give you the portion of the CPUaddress that is bits 14 - 0 (0000 0000 0jkl mnop qrst uvwx) * "CPUaddr & $FF0000" will give you the portion of the CPUaddress that is bits 16 - 23 (abcd efgh 0000 0000 0000 0000). "shl 1" will shift the bits to the right (0abc defg h000 0000 0000 0000). * The OR operator puts these two together (0abc defg hjkl mnop qrst uvwx). Note that bit "i" (A15) gets lost in the mix. This is because, as we mentioned above, this bit will _always_ be a "1" in the CPUaddress, and holds no real information in terms of a memory location. * The equation looks more complicated than it is. In reality, all you have to do is remove A15 and shift the higher-valued bits one to the right to "fill in the gap". * The $200, in most cases, will need to be added at the end to compensate for the 512-byte ROM header which is often present. <<12.4.2>> From ROMaddress to CPUaddress---------------------------------------- To reverse the process: ------------------------------------------------------ | CPUaddr = [(((ROMaddr - $200) and $FF8000) shr 1) or | | ((ROMaddr - $200) and $7FFF)] or $8000 | ------------------------------------------------------ This equation, too, looks more complicated than it is. Simply subtract $200 from the ROMaddress to compensate for the header, then convert this number to binary. A15 to A22 should become A16 to A23. Insert a "1" in A15. This will be your CPUaddress, assuming the game is LoROM. * For some games, you will need to make A23 high when converting from ROMaddress to CPUaddress. This will be the case if the CPUaddresses for this game are in the $808000 and up range. You can find this out if there are (non-7E**) Pro Action Replay codes for the game you are working on; if the codes start with an 8 or above, you'll want to make A23 high when converting from ROMaddress to CPUaddress. If there are no appropriate PAR codes, then you'll just have to find out by trial and error. ;) ** PAR codes beginning with 7E affect a game's RAM, and not its ROM. Game Genie can only affect the ROM. <12.5> Example from a HiROM Game---------------------------------------------- [FINAL FANTASY III] 135C-7B85 Terra starts with 110 Vigor STEP 1: Convert GG Cypher into Normal Hex ------------------------------------------ Game Genie ---> Hex 135C-7B85 ---> 6E7A-39B7 STEP 2: Cut down to six digits ------------------------------- $7A39B7 STEP 3: Convert to binary & decypher ------------------------------------- 11110100011100110110111 01111010 00111001 10110111 ijklqrst opabcduv wxefghmn abcdefgh ijklmnop qrstuvwx 11101101 01111100 10100110 STEP 4: Get CPU Address ----------------------- 111011010111110010100110 = $ED7CA6 STEP 5: Convert to ROM Address ------------------------------ ROMaddress = CPUaddress - $BFFE00 ROMaddress = $ED7CA6 - $BFFE00 ROMaddress = $2D7EA6. STEP 6: Set the address to the appropriate value ------------------------------------------------ [2D7EA6:6E] is the ROM address and value to set Terra's initial Vigor to 110. Go to this offset in a hex editor, change it to 6E, and Terra will start with 110 vigor without the GG! <12.6> Example from a LoROM game---------------------------------------------- [FINAL FANTASY II] 00CE-6D69 The Gunslinger Code This is probably the most famous Game Genie code of all time, so I'll use it for the example. Note that FF2's CPUaddresses start at $008000, rather than at $808000, which is the norm for LoROM games. Some older games will start at $000000, but doing that makes the SNES run at 2/3 speed (thanks to Cheatmaster for that bit of information). STEP 1: Convert GG Cypher into Normal Hex ------------------------------------------ Game Genie ---> Hex 00CE-6D69 ---> 44AF-8085 STEP 2: Cut down to six digits ------------------------------- $AF8085 STEP 3: Convert to binary & decypher ------------------------------------- 101011111000000010000101 10101111 10000000 10000101 ijklqrst opabcduv wxefghmn abcdefgh ijklmnop qrstuvwx 00000001 10100110 11110010 STEP 4: Get CPU Address ----------------------- 000000011010011011110010 = 01A6F2h STEP 5: Convert to ROM Address ------------------------------ 000000011010011011110010 > Remove A15 00000001_010011011110010 > Shift bits right 1 000000001010011011110010 > Convert to Hex $00A6F2 > Add 200h $00A8F2 > Put your value in [00A8F2:44] is the ROM address and value to have a permanent Gunslinger code! ********************************* * PART 13: A DIFFERENT APPROACH * ********************************* <13.1> Introduction----------------------------------------------------------- Part 12's approach to code creation is mathematical and precise. This section of the FAQ presents some information that is especially useful in creating new codes from preexisting codes -- namely, how to increment the address a code modifies by a known value. <13.2> Tips for code altering------------------------------------------------- Do you have a known code and want to create a code with a distinct effect that affects the same general area of the game? Here are a few tips on making new codes from preëxisting ones. Character Position What You Can Change It To ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 & 2 Anything. Determines the degree to which the memory address is affected. 3 This is the position that ends up modifying the controversial A15 (see <12.4>). Some Game Genies will make sure A15 is always high because LoROM games require it. This means if you enter D,F,4, 7,0,9,1, or 5 into slot 3, some GG's will automatically convert it to 6,B,C,8,A,2,3, or E, respectively. Even in HiROM games -- where A15 can be either high or low -- these newer GGs will convert the code. Some GG's seem to still affect both ROMaddresses (with A15 both high and low), even if it changes A15 to being high. There are at least 3 versions of the GG out there: 1) does not convert at all; will affect both ROMaddresses with A15 low and A15 high if the game is HiROM 2) will automatically make A15 high on the code screen; will affect both ROMaddresses with A15 low and A15 high if the game is HiROM 3) will not automatically convert; will only affect one address -- either with A15 high or A15 low -- for HiROM games, and the code will not work if A15 is misrepresented in the code (this is the type of interpretation that is also used by the GG code input features on emulators such as ZSnes). 4 Anything; usually gives the code a much different effect, though in the same area of the game, when changed. 5 & 7 Change the character to another one in its group: GROUP CHART: 5&7 ---------------- Group 1: D 0 6 A Group 2: F 9 B 2 Group 3: 4 1 C 3 Group 4: 7 5 8 E 6 & 8 Change the character to another one in its group: GROUP CHART: 6&8 ---------------- Group 1: D F 4 7 Group 2: 0 9 1 5 Group 3: 6 B C 8 Group 4: A 2 3 E <13.3> Actual values of the slots--------------------------------------------- Each slot has a numerical value assigned to it. The numbers listed here are the resulting increase in memory address from increasing the appropriate slot by 1. The reason for the "groups" listed above is that the slots are assigned different values for changing within groups and out of groups. The first value on the chart is the increment going "across" a row on the 'group charts' above; the second value is the increment going "down" a column on the group chart. SLOT VALUE WITHIN GROUP VALUE OUTSIDE GROUP ---- ------------------ ------------------- 3 1000h (4096) 0h (0) 4 10h (16) 10h (16) 5 100h (256) 400000h (4,194,304) 6 4h (4) 100000h (1,048,576) 7 1h (1) 40000h (262,144) 8 400h (1024) 10000h (65536) So, to regroup this, the hierarchy of slots is: 7* 6 4 5* 8 3 8* 7 6* 5 * in order to increment this slot "one" in this position in the hierarchy, add four to it; e.g., D --> 0 --> 6 --> A Confused? The chart below can help. Just find the right slot, find the digit that is present in that slot on the chart, and you will find its value in the CPU Address. Add all the values of all the slots together, and you will be able to find the entire CPU address with just a hex calculator! <13.4> What's worth what? The Master Chart!---------------------------------- SLOT DIGIT VALUE SLOT DIGIT VALUE ---- ----- ----------- ---- ----- ------- 3rd D* $0000/$8000 4th D $00 F* $1000/$9000 F $10 4* $2000/$A000 4 $20 7* $3000/$B000 7 $30 0* $4000/$C000 0 $40 9* $5000/$D000 9 $50 1* $6000/$E000 1 $60 5* $7000/$F000 5 $70 6 $8000 6 $80 B $9000 B $90 C $A000 C $A0 8 $B000 8 $B0 A $C000 A $C0 2 $D000 2 $D0 3 $E000 3 $E0 E $F000 E $F0 * the first value is for HiROM games; the second, for LoROM games. See Part 12. SLOT DIGIT VALUE SLOT DIGIT VALUE ---- ----- ------- ---- ----- ------- 6th D $0 8th D $000 F $4 F $400 4 $8 4 $800 7 $C 7 $C00 0 $100000 0 $10000 9 $100004 9 $10400 1 $100008 1 $10800 5 $10000C 5 $10C00 6 $200000 6 $20000 B $200004 B $20400 C $200008 C $20800 8 $20000C 8 $20C00 A $300000 A $30000 2 $300004 2 $30400 3 $300008 3 $30800 E $30000C E $30C00 SLOT DIGIT VALUE SLOT DIGIT VALUE ---- ----- ------- ---- ----- ------- 5th D $000 7th D $0 0 $100 0 $1 6 $200 6 $2 A $300 A $3 F $400000 F $40000 9 $400100 9 $40001 B $400200 B $40002 2 $400300 2 $40003 4 $800000 4 $80000 1 $800100 1 $80001 C $800200 C $80002 3 $800300 3 $80003 7 $C00000 7 $C0000 5 $C00100 5 $C0001 8 $C00200 8 $C0002 E $C00300 E $C0003 <13.5> Example using the Chart------------------------------------------------ [FINAL FANTASY III] **5C-7B85 Modifies Terra's Vigor looking at the chart, we see that... "5" in slot 3 = 7000h "C" in slot 4 = A0h "7" in slot 5 = C00000h "B" in slot 6 = 200004h "8" in slot 7 = C0002h "5" in slot 8 = 10C00h ----------------------- TOTAL ED7CA6h Does that number look familiar? It should; it's the same CPU address that we arrived at in Part 12 using the bit shift method. <13.6> Converting Back: from ROM Address to GG Code--------------------------- Okay, now that you've created the memory address for a code using the chart, you may be wondering: "How do I go the other way?" While you could reverse the bit shift process in Part 12, you could also use the chart above to do it. This process requires a little deduction on your part, but it's probably easier than the binary hassle. What you have to do is separate the hex number into its six digits, then, in turn, separate the six digits into values which can be made by the numbers on the chart. The first thing you have to do is to convert the ROM address back to a CPU address, which you can do by either _adding_ BFFE00h (for a HiROM game) or going through the reverse bit-shift process detailed in <<12.4.2>> (for a LoROM game). The next thing you need to do is to convert the CPU address into Game Genie format. The best way to illustrate this is through example. Let's say you have found the CPU address to be DA4DB2h. We know we're looking to end up with an eight-digit code [????-????]. The first two ?s will remain that way, as they indicate the data. At the end of this process, though, we will have definite values for the other 6 positions. DA4DB2h = D00000h + A0000h + 4000h + D00h + B0h + 2h 1. The first task is to make D00000h using numbers on the chart. You want a combination of no more than two numbers, and only addition is allowed. So, D00000h = C00000h + 100000h. Looking at the chart, that gives us a "7" in slot 5 and a "0" in slot 6. [????-70??] 2. Next, we have to get A0000h. A0000h = 80000h + 20000h. That gives us a "4" in slot 7 and a "6" in slot 8. [????-7046] 3. Get 4000h, which is simply an "A" in slot 3. [??A?-7046] 4. Get D00h. D00h = C00h + 100h, which is a "7" in slot 8 and a "0" in slot 5. Uh oh! We already have numbers in those slots! No problem. Just "lay" the values for D00h over the previous values; you'll find it always works. For instance, your old value for slot 5 was C00000h. The one you want now is 100h. "Lay" the second on top of the first and you get C00100h, which, if you look on the chart, is a "5" in slot 5. Do a similar thing with slot 8: your value already there is 20000h, and the one you want now is C00h. "Lay" the C00h on the old value, and you get 20C00h, which is obtained with an "8" in slot 8. [??A?-5048] 5. Get B0h. B0h = "8" in slot 4. [??A8-5048] 6. Get 2h. 2h is a "6" in slot 7. You already have a slot 7, so use the "laying" technique again: Your initial value for slot 7 was 80000h. 80000h + 2h = 80002h, which is a "C" in slot 7. So, your final code comes out ??A8-50C8. And that's all there is to it! This is useful, because using a hex editor, you can search the ROM of a game for a value your looking for (for instance, initial stats), and use this to find the equivalent GG code. If you find continuous memory addresses for stats, etc., you don't have to do this for every code. Just use the "increment" information in <13.3> to calculate the rest of the codes-- 99 times out of 100 you'll be right. If you're at all acquainted with binary, though, reversing the 'bit shift' method in <12.2> is probably an easier process. ******************************** * PART 14: COMPANY HEX METHODS * ******************************** <14.1> Introduction----------------------------------------------------------- Certain companies tend to store the memory in their cartridges in certain places. So, in turn, the most useful codes for games by those companies tend to use the same "groups". These charts will help you ascertain which "groups" are best to use for positions 5, 6, 7 and 8 in games by various companies. --------------------------------------------------------------------------- | CHART: ****-5678 | | Each CODE slot has 4 possible groups to plug in. | | Let's pretend you want to create codes for... Final Fantasy 3 (Square). | | Well, looking at my chart below you will see that: | | ************** | | * SQUARESOFT * | | ************** | | MOST USED: 4111 | | OTHERS: 1111 1113 1114 1111 4113 | | | | Meaning that if you want to create a working code for FF3, you might | | want slots 6,7 and 8 to come from group 1, and slot 5 to come from | | group 4. It doesn't matter what slots 1-4 are. | | SAMPLE CODES: D555-776D 8800-8D67 <--- Notice how slots 6,7, and 8 | | belong to group 1, and slot 5 | | belongs to group 4. | | | | 5 & 7 Change the character to another one in its group: | | Group 1: D 0 6 A | | Group 2: F 9 B 2 | | Group 3: 4 1 C 3 | | Group 4: 7 5 8 E | | | | 6 Change the character to another one in its group: | | Group 1: D F 4 7 | | Group 2: 0 9 1 5 | | Group 3: 6 B C 8 | | Group 4: A 2 3 E | | | | 8 Can be anything, but the alphanumerics within | | the "groups" for position 6 will create similar | | effects. | | | --------------------------------------------------------------------------- <16.2> Company Hex Method Chart----------------------------------------------- NOTE: Remember the 4 numbers you see are the groups used for slots 5, 6, 7, and 8, respectively. #################### # 20TH CENTURY FOX # #################### MOST USED : 1111 OTHERS : 1121 1212 1244 ########### # ACCLAIM # ########### MOST USED : 1111 ######### # ATARI # ######### MOST USED : 1111 1112 ########## # CAPCOM # ########## MOST USED : 1111 1112 OTHERS : 3111 3113 3112 ############# # DATA EAST # ############# MOST USED : 1112 1111 ########## # DISNEY # ########## MOST USED : 1111 ################### # ELECTRONIC ARTS # ################### MOST USED : 1111 OTHERS : 1122 1134 ######## # ENIX # ######## MOST USED : 1112 OTHERS : 1131 1121 ######## # FASA # ######## MOST USED : 1111 3111 OTHERS : 3122 ############# # INTERPLAY # ############# MOST USED : 4234 ########## # JALECO # ########## MOST USED : 1111 3111 3324 OTHERS : 3332 3112 ######### # KEMCO # ######### MOST USED : 1111 OTHERS : 1144 ######## # KOEI # ######## MOST USED : 1112 OTHERS : 4131 4124 ########## # KONAMI # ########## MOST USED : 1111 1112 OTHERS : 1122 3111 2113 3114 ########## # MIDWAY # ########## MOST USED : 1111 3114 OTHERS : 3111 3231 3434 ############ # NINTENDO # ############ MOST USED : 2411 3111 OTHERS : 1243 1111 1124 1112 ############## # SQUARESOFT # ############## MOST USED : 4111 OTHERS : 1112 1113 1114 1111 4113 ################### # WARNER BROTHERS # ################### MOST USED : 3111 OTHERS : 3113 ******************************** * PART 15: WORDS FROM THE WISE * ******************************** Here are some helpful tips from various people: <15.1> Don't scrap blackout and freeze codes. Chances are that the code needs to be changed a bit so it doesn't freeze or blackout. <15.2> Here are some tips for "start with" codes: Changing the 4th character to something else will sometimes give the same effect but for somebody / something else. Example: CHRONO TRIGGER GAME 8B64-745D Crono starts with the SeraphSong accessory in his weapon slot 8B6A-745D Lucca starts with the SeraphSong accessory in her weapon slot <15.3> Changing the first and/or second character will give different items. Example: CHRONO TRIGGER GAME 8B64-745D Crono starts with the SeraphSong accessory in his weapon slot. 4464-745D Crono starts with the PicoMagnum gun in his weapon slot. <15.4> Change the 8th character of a code to any other character. If you get an effect, chances are it will be different. <15.5> Changing the 3rd, 5th or 8th characters will most likely give a very different effect. <15.6> Changing the 7th character of a code has little change on the effect (most of the time). <15.7> Once you have the last 4 characters of a code (____-XXXX) enter random characters in the first four slots and see what kinds of different effects you come up with. (Good endings to try are -54D8 on Final Fantasy III and -7765 on Chrono Trigger). **************************************************** * PART 16: ANATOMY OF THE CODE: FINAL FANTASY III * **************************************************** <16.1> Introduction----------------------------------------------------------- I have done most of my code-creating work with the Final Fantasy III game by Squaresoft. What follows is the results of lots and lots and lots of guessing. <16.2> Memory Address Positions----------------------------------------------- * Positions 6 and 7: Alter these positions in a pre-existing code to change its effect slightly. Sometimes, you can end up with an entirely different code by changing the sixth character, however. The most common values for these positions are D, 0, 6, and A for position 7 and D, F, 4, 7 for position 6. EX: CE17-77D6 Learn spells at 5x rate CE17-7DD6 Gain every 4th rage on the right hand side of Gau's list after one battle; screw up configuration 59A3-846D Enables entire Veldt cycle, plus some bosses 59A3-8FDD Only run into enemies from Kefka's Tower on the Veldt. * Positions 3 and 4: A good way to create codes is to take a common ending (-XXXX) and a constant value (first 2 characters -- AA seems to work well for a constant) and experiment by changing the third and fourth characters. AA00-54D8 Mimic enemies' last action AA88-54D8 Changes battle music AA23-54D8 16,777,216 experience pts. per fight AA2D-54D8 Act weirdly in battle ENDINGS TO TRY: --------------- IN BATTLE: -54D8, -54DB, -E4D8, -E4DB, -8D68, -84D8, -84DB, -77D6, -E7D6, -57D6, -54A6, -54D6, -EFDB, -E768. ON MENU: -5F63, -5D03, -5DAE, -EF63, -8F63 ON MAP: -740D, -74AD, -746D, -770D, -77AD * Position 5: This is usually 7, 5, 8, or E. Changing this to one of the other three characters from a pre-existing code will usually create a new, different code. THIS METHOD IS OFTEN OVERLOOKED AND CAN RESULT IN SOME GREAT NEW CODES!! I found the Enemy Spells Code (**00-8D68) this way. * Position 8: Changing this will alter the broad area of the game which your code affects: ------------------------------------------ D, F, 4, 7 = Affects the map screen & walkabout graphics for characters 0, 9, 1, 5 = Miscellaneous (varies greatly) 6, B, C, 8 = Affects mechanics of battle; what happens after battle; menu screens in battle A, 2, 3, E = Affects out-of-battle menu screens (e.g. equip, item, stores) Try changing the 8th digit to another in its group for a new code which affects the same area of the game. Example: 2624-EFD8 Glitchy menu screen in battle 2624-EFDB Cast any spell on any target <16.3> Disassembling a Code--------------------------------------------------- Let's take the code xx00-8D68, which replaces Strago's Lores with various attacks from the game. We can learn a number of things from this code: 1. The memory address at which the commands for executing Strago's Lores are kept: xx00-8D68 ---> straight hex xx44-B08B ---> memory address 025042:xx Look at this memory address in a Hex Editor and you will see that it is set to "8B". This is because 8Bh (139) is the index number for the "Condemned" spell, the first spell on Strago's list. 2. The spells are stored in a certain order, and each spell in the game has an index number. Replacing xx with that index number will result in Strago's lore list starting with that numbered spell and including the next 23. Example: Index number of "oFire " = DD (00h, 0 dec) "oIce " = DF (01h, 1 dec) "oBolt " = D4 (02h, 2 dec) "Condemned " = 68 (8Bh, 139 dec) "Absolute 0" = 88 (BBh, 187 dec) "Engulf " = 29 (D5h, 213 dec) "Imp Song " = C7 (A3h, 163 dec) "Fallen One" = AD (C0h, 192 dec). 3. ANALYSIS OF THE CODE: Positions 1 & 2: xx sets the value for the memory address 025042h. Position 8: The "8" tells the code to affect the part of the ROM that controls battle, or the results of a battle Position 3: The "0" directs the code pointer to the MAGIC-TYPE MENU area of the memory. Positions 4 & 5: These zero in on the LORE menu in the memory. Positions 6 & 7: These affect the addresses that tell the game HOW to handle the selection of a Lore (cast a spell). Changing these can result in different things happening when you select a Lore (e.g., execute a physical attack, screw up battle, black out game). *********************** * PART 17: FINAL WORD * *********************** I hope this guide has helped... remember, one of the most important factors in GG code creation is just plain luck! Even themost seasoned code creator can search for hours and find nothing. Finally, with the invaluable assistance of gervase@azstarnet.com and starfox@earthcorp.com, I was able to find out the way to convert Game Genie codes into ROM addresses in ANY game! Enjoy the fruit of our labors! :) Sam Volo Fallen_One@iname.com GGCCC Co-President ---END OF FILE---------------------------------------------------------- Did you enjoy this file and want to see more like it? Or perhaps you're interested in the Internet's largest archive of Game Genie codes? Check out the GGCCC's web site at http://www.ggccc.com/. ------------------------------------------------------------------------ To subscribe to the GGCCC's mailing list, send an e-mail to genielist-subscribe@egroups.com ==============================================rev. 7.00 / 09 July 2000==