Difference between revisions of "Editing Rules"

From NES Hacker Wiki
Jump to: navigation, search
Line 7: Line 7:
 
Easy Cheats should be formatted in the following way:
 
Easy Cheats should be formatted in the following way:
  
0123 - 0F - Cheat Description
+
{{CheatTop}}
 +
{{Cheat|Powerup|08C4|D3|01|Cheat Description}}
 +
{{CheatBottom}}
  
Each number uses leading zeroes to ensure they're all the same length, 4 digits for the memory address and two digits for the value. The description should be treated like a title where all important words are upper case, while lesser important words like a, of, the, etc. are lower case.
+
Each number uses leading zeroes to ensure they're all the same length, 4 digits for the memory address and two digits for the value. If the compare isn't used, fill it with a dash "-". The description should be treated like a title where all important words are upper case, while lesser important words like a, of, the, etc. are lower case.
  
 
===Multiple Codes Per Cheat===
 
===Multiple Codes Per Cheat===
When two cheat codes need to be tied together, add the cheat number to the description with the total number of cheats include. Here is an example:
+
When two or more cheat codes need to be tied together, put them into a single cheat on multiple lines. Add to the description the cheat number, a slash, and the total number surrounded in parenthesis. Here is an example:
  
B424 - 0B - High Jumps (1/5)
+
{{CheatTop}}
B425 - 0B - High Jumps (2/5)
+
{{Cheat|Jump|9472<br />9473|FA<br />F9|FC<br />FC|High Jump (1/2)<br />High Jump (2/2)}}
B426 - 0B - High Jumps (3/5)
+
{{CheatBottom}}
B427 - 0B - High Jumps (4/5)
 
B428 - 0B - High Jumps (5/5)
 
  
 
===Description Notes===
 
===Description Notes===
If you need to add a note in the description, put the note in parentheses and do not upper case it like a title. For example:  
+
If a cheat will disrupt normal game play, add a note added to its description. Place notes in parentheses and only capitalize the first word. For example:
  
0071 - 63 - Infinite Hearts (Must turn off at the end of a stage)
+
{{CheatTop}}
 +
{{Cheat|Powerup|0071|63|-|Infinite Hearts (Turn off at the end of a stage)}}
 +
{{CheatBottom}}
  
===Grouping===
+
===Order===
Group similar codes together and given them a name. For example:
+
Cheats should be ordered based on what they do. Cheats affecting lives and/or hit points should be first, followed by power-ups, those that affect movement (jumps, speed, etc.) and then less-important cheats (like infinite time or continues). Similar cheats should be grouped together. Challenger cheats should always be placed at the bottom and be ordered in a similar fashion. For example:
  
Lives
+
{{CheatTop}}
010A - 09 - Start With 9 Lives and 9 Continues
+
{{Cheat|Lives|010A|09|-|Start With 9 Lives and 9 Continues}}
010A - 63 - Start With 99 Lives and 99 Continues
+
{{Cheat|Lives-Infinite|02BE|09|-|Infinite Lives}}
02BE - 09 - Infinite Lives Both Players
+
{{Cheat|HitPoints|C5D0<br />C889|0F<br />0F|0A<br />0A|More Hit Points (1/2)<br />More Hit Points (2/2)}}
+
{{Cheat|HitPoints-Infinite|02AB|0B|-|Infinite Hit Points}}
Hit Points
+
{{Cheat|Weapon|02A2|01|-|Have Knife}}
C5D0 - 0F - Start With More Hit Points (1/2)
+
{{Cheat|Weapon|02A2|01|-|Have Nun-chucks}}
C889 - 0F - Start With More Hit Points (2/2)
+
{{Cheat|Time|0204|40|-|Infinite Time}}
02AB - 0B - Infinite Hit Points
+
{{Cheat|Continue|02BF|09|-|Infinite Continues}}
+
{{Cheat|Challenge|010A|01|-|Start With 1 Life and 1 Continue}}
Power Ups
+
{{Cheat|Challenge|C5D0<br />C889|06<br />06|0A<br />0A|Fewer Hit Points (1/2)<br />Fewer Hit Points (2/2)}}
02A2 - 01 - Always Have Knife
+
{{Cheat|Challenge|02A2|00|-|Can't Use Weapons}}
02A2 - 02 - Always Have Nunchucks
+
{{CheatBottom}}
  
 
===Naming Conventions===
 
===Naming Conventions===
Unless the game has a specific name for a value, use the following standard names in the cheat code description.
+
Some games have specific names for values and those names should be used rather than a generic name. For example, [[The Legend of Zelda]] uses the name "rupee" for money. For games that don't have specific names, use the following standards in the cheat code descriptions.
  
* '''Lives''' - For the number of retries a player gets. Don't used Guys, 1-Ups, etc.
+
* '''Lives''' - For the number of retries a player gets. Don't used "guys," "1-ups," etc.
* '''Hit Points''' - For when the player can take multiple hits. Don't use HP, Life, Hits, etc.
+
* '''Hit Points''' - For when the player can take multiple hits. Don't use "HP," "life," "energy," etc.
* '''Level''' - Try to match the game's terminology (Stage, Area, etc.), but use Level as the default when no specific name is listed.
+
* '''Level''' - Try to match the game's terminology (stage, area, etc.), but use "level" as the default when no specific name is listed.
* '''Invincible''' - When the player cannot take damage. Don't use invulnerable unless you need to describe a second type of invincibility.
+
* '''Invincible''' - When the player cannot take damage. Only use "invulnerable" if you need to describe a different type of invincibility.
  
 
===Multiple Players===
 
===Multiple Players===
When distinguishing between Player 1 and Player 2, always use P1, P2 at the '''beginning''' of the code. All P1 codes should be grouped together, then all P2 codes. Here is an example:
+
When distinguishing between Player 1 and Player 2, always use P1, P2 at the '''beginning''' of the code. All P1 codes should be grouped together, then all P2 codes. You can use this same system for RPGs with multiple party members as well. A few games, like [[Gauntlet II]], allowed four unique players at once, and should use P3 and P4. Here is an example:
  
0432 - 0A - P1 Infinite Lives
+
{{CheatTop}}
041E - 7F - P1 Hit Points
+
{{Cheat|Lives-Infinite|05B4|89|-|P1 Infinite Lives}}
03CC - FE - P1 Always Invincible
+
{{Cheat|HitPoints-Infinite|0210|18|-|P1 Infinite Hit Points}}
0433 - 0A - P2 Infinite Lives
+
{{Cheat|Lives-Infinite|05E4|89|-|P2 Infinite Lives}}
041F - 7F - P2 Hit Points
+
{{Cheat|HitPoints-Infinite|0224|18|-|P2 Infinite Hit Points}}
03CD - FE - P2 Always Invincible
+
{{CheatBottom}}
 
 
For those few games that allow 4 players, use P3 and P4.
 
  
 
===Code Duplication===
 
===Code Duplication===
Don't duplicate an existing code unless there is a valid reason. The first code below gives the player 9 oil, the second code gives them 99 oil, but since they both yield infinite oil, they do the same thing.
+
Don't duplicate an existing code unless there is a valid reason. The first code below gives the player 9 oil, the second code gives them 99 oil, but since they both yield infinite oil, each code does the same thing.
  
00A4 - 09 - Infinite Oil
+
{{CheatTop}}
00A4 - 99 - Infinite Oil
+
{{Cheat|Ammo-Infinite|00A4|09|-|Infinite Oil}}
 +
{{Cheat|Ammo-Infinite|00A4|99|-|Infinite Oil}}
 +
{{CheatBottom}}
  
 
However, in this example, the codes have a different purpose. One starts the player with a lot of oil, the other provides infinite oil. In this case, both codes are valid.
 
However, in this example, the codes have a different purpose. One starts the player with a lot of oil, the other provides infinite oil. In this case, both codes are valid.
  
00A4 - 99 - Infinite Oil
+
{{CheatTop}}
D86C - 2F - Start With 99 Oil
+
{{Cheat|Ammo-Infinite|00A4|09|-|Infinite Oil}}
 
+
{{Cheat|Ammo|D86C|2F|03|Start With 99 Oil}}
 +
{{CheatBottom}}
  
 
==Memory Addresses==
 
==Memory Addresses==
Line 78: Line 81:
  
 
===Numbers===
 
===Numbers===
Many games handle a series of numbers like score, hit points, lives, etc. Displaying these numbers need to be standardized in order to remain intuitive. If the numbers are stored across multiple memory locations, write them out as follows:
+
Many games handle large numbers like score, hit points, etc. in multiple areas of memory, but there are different forms of doing this, and each form should be displayed in a particular way to remain intuitive. If single digits are stored across multiple memory locations, write them out as follows:
  
 
  07DE - P1 Score: 9xxxx
 
  07DE - P1 Score: 9xxxx
Line 86: Line 89:
 
  07E2 - P1 Score: xxxx9
 
  07E2 - P1 Score: xxxx9
  
Note that the 9 is the position that is being altered, and the x shows the full size of the number. Sometimes a game will display a digit that isn't part of actual number. For example, the score may read "125500," but the 00 at the end is not stored in memory. When this occurs, add the unused values to the score to show where they are. For example:
+
Note that the 9 is the variable, position that is being altered, and an x is a place holder to show the full size of the number. Sometimes a game will display a digit that isn't part of actual number. For example, the score may read "125500," but the 00 at the end is not stored in memory. When this occurs, add the unused values to the score to show where they are. For example:
  
 
  0200 - P1 Score: 9xxx00
 
  0200 - P1 Score: 9xxx00
Line 99: Line 102:
 
  0426 - Score: xxxx99
 
  0426 - Score: xxxx99
  
Many games store numbers by multiplying one byte with a second byte, and sometimes a third byte. When this occurs, use the following notation:
+
There is a different way of handling numbers that is a bit more technical. Some games store numbers by multiplying one byte with a second byte (and sometimes even a third or fourth byte). This allows very large numbers to be stored in relatively small areas of memory. When this occurs, use the following notation:
  
 
  00BC - Gold: x1
 
  00BC - Gold: x1
Line 106: Line 109:
  
 
===Normal Range===
 
===Normal Range===
When the game has a normal operating range for a variable, include the normal low and high values.
+
When the game has a normal operating range for a variable, include the normal low and high values. This will also help determine if the value is stored as decimal or hex).
  
 
  00C6 - Magic Points (00-63)
 
  00C6 - Magic Points (00-63)
 +
 +
Do not include all ''possible'' values, but rather the ''expected'' values. For example, In [[Super Mario Bros.]], the player's lives value can ''technically'' span from 0 to 255, but the game starts glitching when it surpasses 9, so the line should read:
 +
 +
075A - Lives (00-09)
  
 
===Example Values===
 
===Example Values===
Line 115: Line 122:
 
  0756 - Powerup Flag (00 - Mario, 01 - Super Mario, 02 - Fire Mario)
 
  0756 - Powerup Flag (00 - Mario, 01 - Super Mario, 02 - Fire Mario)
  
 +
When there are too many possibilities to comfortably fit on a line, break the line up into multiple lines, each indented below the first.
 +
 +
00E0 - Tile type on which the player is standing:
 +
00 - Grass
 +
01 - Desert
 +
02 - Hills
 +
03 - Stairs Up
 +
04 - Tiles
 +
05 - Stairs Down
 +
06 - Swamp
 +
07 - Town
 +
08 - Cave
 +
09 - Castle
 +
0A - Bridge
 +
0B - Forest
 +
0C - Chest
 +
0D - Force Field
 +
 +
A lot of games will store multiple true or false values (or flags) into a single byte. These should be denoted by a plus sign at the beginning so other readers know how much to add.
 +
 +
680B - Joined party members
 +
+01 - Mage
 +
+02 - Bard
 +
+04 - Fighter
 +
+08 - Druid
 +
+10 - Tinker
 +
+20 - Paladin
 +
+40 - Ranger
 +
+80 - Shepherd
  
 
==Text==
 
==Text==
Characters should be listed with a two-digit hexadecimal look up, an equal sign, and then the character value. Do not put spaces before or after the equal sign. The text table should be sorted in order of the hexadecimal number NOT the character. Here is an example:
+
Characters should be listed with a two-digit hexadecimal look-up, an equal sign, and then the character value. Do not put spaces before or after the equal sign (unless the crossover character is actually a space, like line 39 in the example). The text table should be sorted in order of the hexadecimal number NOT the character. Here is an example:
  
 +
00=0
 +
01=1
 +
02=2
 +
...
 
  10=A
 
  10=A
 
  11=B
 
  11=B
 
  12=C
 
  12=C
  13=D
+
  ...
 
+
39=
 +
3A=.
 +
3B=,
  
 
==Code==
 
==Code==

Revision as of 15:24, 11 April 2016

In order to ensure that each page follows a similar style, please read and conform to the following editing rules.

Easy Cheats

These are the cheats that appear at the top of every game page.

General Display

Easy Cheats should be formatted in the following way:

Icon Addr Val Cmp Description
Icon-Powerup.png 08C4 D3 01 Cheat Description
How do I use these?

Each number uses leading zeroes to ensure they're all the same length, 4 digits for the memory address and two digits for the value. If the compare isn't used, fill it with a dash "-". The description should be treated like a title where all important words are upper case, while lesser important words like a, of, the, etc. are lower case.

Multiple Codes Per Cheat

When two or more cheat codes need to be tied together, put them into a single cheat on multiple lines. Add to the description the cheat number, a slash, and the total number surrounded in parenthesis. Here is an example:

Icon Addr Val Cmp Description
Icon-Jump.png 9472
9473
FA
F9
FC
FC
High Jump (1/2)
High Jump (2/2)
How do I use these?

Description Notes

If a cheat will disrupt normal game play, add a note added to its description. Place notes in parentheses and only capitalize the first word. For example:

Icon Addr Val Cmp Description
Icon-Powerup.png 0071 63 - Infinite Hearts (Turn off at the end of a stage)
How do I use these?

Order

Cheats should be ordered based on what they do. Cheats affecting lives and/or hit points should be first, followed by power-ups, those that affect movement (jumps, speed, etc.) and then less-important cheats (like infinite time or continues). Similar cheats should be grouped together. Challenger cheats should always be placed at the bottom and be ordered in a similar fashion. For example:

Icon Addr Val Cmp Description
Icon-Lives.png 010A 09 - Start With 9 Lives and 9 Continues
Icon-Lives-Infinite.png 02BE 09 - Infinite Lives
Icon-HitPoints.png C5D0
C889
0F
0F
0A
0A
More Hit Points (1/2)
More Hit Points (2/2)
Icon-HitPoints-Infinite.png 02AB 0B - Infinite Hit Points
Icon-Weapon.png 02A2 01 - Have Knife
Icon-Weapon.png 02A2 01 - Have Nun-chucks
Icon-Time.png 0204 40 - Infinite Time
Icon-Continue.png 02BF 09 - Infinite Continues
Icon-Challenge.png 010A 01 - Start With 1 Life and 1 Continue
Icon-Challenge.png C5D0
C889
06
06
0A
0A
Fewer Hit Points (1/2)
Fewer Hit Points (2/2)
Icon-Challenge.png 02A2 00 - Can't Use Weapons
How do I use these?

Naming Conventions

Some games have specific names for values and those names should be used rather than a generic name. For example, The Legend of Zelda uses the name "rupee" for money. For games that don't have specific names, use the following standards in the cheat code descriptions.

  • Lives - For the number of retries a player gets. Don't used "guys," "1-ups," etc.
  • Hit Points - For when the player can take multiple hits. Don't use "HP," "life," "energy," etc.
  • Level - Try to match the game's terminology (stage, area, etc.), but use "level" as the default when no specific name is listed.
  • Invincible - When the player cannot take damage. Only use "invulnerable" if you need to describe a different type of invincibility.

Multiple Players

When distinguishing between Player 1 and Player 2, always use P1, P2 at the beginning of the code. All P1 codes should be grouped together, then all P2 codes. You can use this same system for RPGs with multiple party members as well. A few games, like Gauntlet II, allowed four unique players at once, and should use P3 and P4. Here is an example:

Icon Addr Val Cmp Description
Icon-Lives-Infinite.png 05B4 89 - P1 Infinite Lives
Icon-HitPoints-Infinite.png 0210 18 - P1 Infinite Hit Points
Icon-Lives-Infinite.png 05E4 89 - P2 Infinite Lives
Icon-HitPoints-Infinite.png 0224 18 - P2 Infinite Hit Points
How do I use these?

Code Duplication

Don't duplicate an existing code unless there is a valid reason. The first code below gives the player 9 oil, the second code gives them 99 oil, but since they both yield infinite oil, each code does the same thing.

Icon Addr Val Cmp Description
Icon-Ammo-Infinite.png 00A4 09 - Infinite Oil
Icon-Ammo-Infinite.png 00A4 99 - Infinite Oil
How do I use these?

However, in this example, the codes have a different purpose. One starts the player with a lot of oil, the other provides infinite oil. In this case, both codes are valid.

Icon Addr Val Cmp Description
Icon-Ammo-Infinite.png 00A4 09 - Infinite Oil
Icon-Ammo.png D86C 2F 03 Start With 99 Oil
How do I use these?

Memory Addresses

Memory addresses include the values found in bytes 0000-07FF. You can also include any memory beyond this section provided it's not code. For example, if there is a data table in the ROM, or the area where the game stores battery memory.

Numbers

Many games handle large numbers like score, hit points, etc. in multiple areas of memory, but there are different forms of doing this, and each form should be displayed in a particular way to remain intuitive. If single digits are stored across multiple memory locations, write them out as follows:

07DE - P1 Score: 9xxxx
07DF - P1 Score: x9xxx
07E0 - P1 Score: xx9xx
07E1 - P1 Score: xxx9x
07E2 - P1 Score: xxxx9

Note that the 9 is the variable, position that is being altered, and an x is a place holder to show the full size of the number. Sometimes a game will display a digit that isn't part of actual number. For example, the score may read "125500," but the 00 at the end is not stored in memory. When this occurs, add the unused values to the score to show where they are. For example:

0200 - P1 Score: 9xxx00
0201 - P1 Score: x9xx00
0202 - P1 Score: xx9x00
0203 - P1 Score: xxx900

Sometimes two digits are stored in a single byte. In cases like this, simply display 99 per section and xx in the place holders, like so:

0424 - Score: 99xxxx
0425 - Score: xx99xx
0426 - Score: xxxx99

There is a different way of handling numbers that is a bit more technical. Some games store numbers by multiplying one byte with a second byte (and sometimes even a third or fourth byte). This allows very large numbers to be stored in relatively small areas of memory. When this occurs, use the following notation:

00BC - Gold: x1
00BD - Gold: x255
00BE - Gold: x65535

Normal Range

When the game has a normal operating range for a variable, include the normal low and high values. This will also help determine if the value is stored as decimal or hex).

00C6 - Magic Points (00-63)

Do not include all possible values, but rather the expected values. For example, In Super Mario Bros., the player's lives value can technically span from 0 to 255, but the game starts glitching when it surpasses 9, so the line should read:

075A - Lives (00-09)

Example Values

If a byte stores multiple values, each with a different description, try to include each description. For example:

0756 - Powerup Flag (00 - Mario, 01 - Super Mario, 02 - Fire Mario)

When there are too many possibilities to comfortably fit on a line, break the line up into multiple lines, each indented below the first.

00E0 - Tile type on which the player is standing:
	00 - Grass
	01 - Desert
	02 - Hills
	03 - Stairs Up
	04 - Tiles
	05 - Stairs Down
	06 - Swamp
	07 - Town
	08 - Cave
	09 - Castle
	0A - Bridge
	0B - Forest
	0C - Chest
	0D - Force Field

A lot of games will store multiple true or false values (or flags) into a single byte. These should be denoted by a plus sign at the beginning so other readers know how much to add.

680B - Joined party members
	+01 - Mage
	+02 - Bard
	+04 - Fighter
	+08 - Druid
	+10 - Tinker
	+20 - Paladin
	+40 - Ranger
	+80 - Shepherd

Text

Characters should be listed with a two-digit hexadecimal look-up, an equal sign, and then the character value. Do not put spaces before or after the equal sign (unless the crossover character is actually a space, like line 39 in the example). The text table should be sorted in order of the hexadecimal number NOT the character. Here is an example:

00=0
01=1
02=2
...
10=A
11=B
12=C
...
39= 
3A=.
3B=,

Code

Try to use the same indentation for comments as existing games.