
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://kb.speeddemosarchive.com/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://kb.speeddemosarchive.com/index.php?action=history&amp;feed=atom&amp;title=Bughunting</id>
		<title>Bughunting - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://kb.speeddemosarchive.com/index.php?action=history&amp;feed=atom&amp;title=Bughunting"/>
		<link rel="alternate" type="text/html" href="https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;action=history"/>
		<updated>2026-05-08T22:46:38Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.9</generator>

	<entry>
		<id>https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;diff=3625&amp;oldid=prev</id>
		<title>Enhasa: maybe i should hit preview this time</title>
		<link rel="alternate" type="text/html" href="https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;diff=3625&amp;oldid=prev"/>
				<updated>2009-08-31T03:42:20Z</updated>
		
		<summary type="html">&lt;p&gt;maybe i should hit preview this time&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 03:42, 31 August 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==RPGs==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==RPGs==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Integer Underflow===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Integer Underflow===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Games which need to store values do so based on how large that value might &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;possibly &lt;/del&gt;need to become. A standard way of doing this on old games is by using one byte, which gives an unsigned range of 0..255, or a signed range of -128..127. Unless the game ensures that the value cannot go below the minimum, you can often cause the value to wrap around to its maximum. This can be very useful if the value in question is your character's Strength or Level. With Baldur's Gate you can use an [[Infinity_Engine#Inventory_Stack_Underflow|item-swapping trick]] to wrap an item's quantity value around to 65535, the two byte unsigned maximum. With Suikoden II you can use the Kindness Rune to add 255 Attack by making your Kindness value lower than 0.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Games which need to store values do so based on how large that value might need to become. A standard way of doing this on old games is by using one byte, which gives an unsigned range of 0..255, or a signed range of -128..127. Unless the game ensures that the value cannot go below the minimum, you can often cause the value to wrap around to its maximum. This can be very useful if the value in question is your character's Strength or Level. With Baldur's Gate you can use an [[Infinity_Engine#Inventory_Stack_Underflow|item-swapping trick]] to wrap an item's quantity value around to 65535, the two byte unsigned maximum. With Suikoden II you can use the Kindness Rune to add 255 Attack by making your Kindness value lower than 0.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Memory Corruption===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Memory Corruption===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Memory corruption can be used to completely break open a game. This volatile type of bug can have profound effects on the stability and state of the game. A well-known corruption bug occurs on Final Fantasy VI when Relm uses Sketch after Vanish, causing it to miss the target. The program will then attempt to read an area of memory that does not contain any enemy data, with potentially exploitable results.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Memory corruption can be used to completely break open a game. This volatile type of bug can have profound effects on the stability and state of the game. A well-known corruption bug occurs on Final Fantasy VI when Relm uses Sketch after Vanish, causing it to miss the target. The program will then attempt to read an area of memory that does not contain any enemy data, with potentially exploitable results.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Enhasa</name></author>	</entry>

	<entry>
		<id>https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;diff=3624&amp;oldid=prev</id>
		<title>Enhasa: very minor wording</title>
		<link rel="alternate" type="text/html" href="https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;diff=3624&amp;oldid=prev"/>
				<updated>2009-08-31T03:41:00Z</updated>
		
		<summary type="html">&lt;p&gt;very minor wording&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 03:41, 31 August 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==RPGs==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==RPGs==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Integer Underflow===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Integer Underflow===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Games which need to store values do so based on how large that value might possibly &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;get&lt;/del&gt;. A standard way of doing this on old games is by using one byte, which gives an unsigned range of 0..255, or a signed range of -128..127. Unless the game ensures that the value cannot go below the minimum, you can often cause the value to wrap around to its maximum. This can be very useful if the value in question is your character's Strength or Level. With Baldur's Gate you can use an [[Infinity_Engine#Inventory_Stack_Underflow|item-swapping trick]] to wrap an item's quantity value around to 65535, the two byte unsigned maximum. With Suikoden II you can use the Kindness Rune to add 255 Attack by making your Kindness value lower than 0.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Games which need to store values do so based on how large that value might possibly &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;need to become&lt;/ins&gt;. A standard way of doing this on old games is by using one byte, which gives an unsigned range of 0..255, or a signed range of -128..127. Unless the game ensures that the value cannot go below the minimum, you can often cause the value to wrap around to its maximum. This can be very useful if the value in question is your character's Strength or Level. With Baldur's Gate you can use an [[Infinity_Engine#Inventory_Stack_Underflow|item-swapping trick]] to wrap an item's quantity value around to 65535, the two byte unsigned maximum. With Suikoden II you can use the Kindness Rune to add 255 Attack by making your Kindness value lower than 0.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Memory Corruption===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Memory Corruption===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Memory corruption can be used to completely break open a game. This volatile type of bug can have profound effects on the stability and state of the game. A well-known corruption bug occurs on Final Fantasy VI when Relm uses Sketch after Vanish, causing it to miss the target. The program will then attempt to read an area of memory that does not contain any enemy data, with potentially exploitable results.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Memory corruption can be used to completely break open a game. This volatile type of bug can have profound effects on the stability and state of the game. A well-known corruption bug occurs on Final Fantasy VI when Relm uses Sketch after Vanish, causing it to miss the target. The program will then attempt to read an area of memory that does not contain any enemy data, with potentially exploitable results.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Enhasa</name></author>	</entry>

	<entry>
		<id>https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;diff=3623&amp;oldid=prev</id>
		<title>Enhasa: minor changes for conciseness, clarity, removing weasel words</title>
		<link rel="alternate" type="text/html" href="https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;diff=3623&amp;oldid=prev"/>
				<updated>2009-08-31T03:39:49Z</updated>
		
		<summary type="html">&lt;p&gt;minor changes for conciseness, clarity, removing weasel words&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 03:39, 31 August 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;No program is perfect. By extension, no game is bug-free. The techniques here will help you find &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;them&lt;/del&gt;, if none are already known. Hopefully the bugs you find will be useful, and you will then add them to this wiki on the appropriate game page!&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;No program is perfect. By extension, no game is bug-free. The techniques here will help you find &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;bugs&lt;/ins&gt;, if none are already known. Hopefully the bugs you find will be useful, and you will then add them to this wiki on the appropriate game page!&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;See also: [[Generic techniques]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;See also: [[Generic techniques]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==All Games==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==All Games==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Games share a lot of code, no matter the genre. Inventory management, quest/plot completion and conversation trees are a common factor, especially among today's &amp;quot;Action RPGs&amp;quot;. As with any code, they are breakable.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Pausing===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Pausing===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Pause may seem like a simple thing to implement, but in &lt;/del&gt;many cases &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;it is done poorly. This mainly applies to &lt;/del&gt;older games. Most commonly &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;it confuses &lt;/del&gt;timed events&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/del&gt;such as reloading or hitstun. You can use this trick &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;on &lt;/del&gt;Mega Man 1 to repeatedly hit bosses with the Lightning weapon, by pausing each time it hits&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/del&gt;and waiting a short duration for the boss's hitstun to reset. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;It &lt;/del&gt;also &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;changes Mega Man&lt;/del&gt;'s vertical velocity to zero &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;on some games&lt;/del&gt;, allowing you to make extra-long jumps.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;In &lt;/ins&gt;many cases&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, especially with &lt;/ins&gt;older games&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, you can exploit quirks with how a game handles pausing&lt;/ins&gt;. Most commonly &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;they confuse &lt;/ins&gt;timed events such as reloading or hitstun. You can use this trick &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;with &lt;/ins&gt;Mega Man 1 to repeatedly hit bosses with the Lightning weapon, by pausing each time it hits and waiting a short duration for the boss's hitstun to reset &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;before un-pausing&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Pausing could &lt;/ins&gt;also &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;reset the character&lt;/ins&gt;'s vertical velocity to zero, allowing you to make extra-long jumps.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Hidden Worlds===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Hidden Worlds===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;On games where &lt;/del&gt;the world is made up of discrete rooms, there must be some mechanic whereby the game decides which room to &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;put &lt;/del&gt;you in next, usually when you reach a boundary. If this mechanic were confused, perhaps by another event &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;occuring &lt;/del&gt;at the same instant the boundary is triggered, then it may send you to the wrong place. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;An alternate way of triggering this is by triggering a boundary while &lt;/del&gt;facing the wrong direction. This &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;often leads &lt;/del&gt;to completely un-navigable areas or copies of other rooms &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;without the contents&lt;/del&gt;. The Pokemon series &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;are known for their &lt;/del&gt;'Glitch Cities' &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;which &lt;/del&gt;can be entered by exiting the Safari Zone in an unintended fashion.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Where &lt;/ins&gt;the world is made up of discrete rooms, there must be some mechanic whereby the game decides which room to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;place &lt;/ins&gt;you in next, usually &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;occurring &lt;/ins&gt;when you reach a boundary. If this mechanic were confused, perhaps by another event &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;happening &lt;/ins&gt;at the same instant the boundary is triggered, then it may send you to the wrong place. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Alternately, you might try &lt;/ins&gt;facing the wrong direction &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;when triggering a boundary&lt;/ins&gt;. This &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;can lead &lt;/ins&gt;to completely un-navigable areas or &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;empty &lt;/ins&gt;copies of other rooms. The Pokemon series&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;' &lt;/ins&gt;'Glitch Cities' can be entered by exiting the Safari Zone in an unintended fashion.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Scrolling===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Scrolling===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When games scroll &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;(&lt;/del&gt;in any direction&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;)&lt;/del&gt;, they &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;have to &lt;/del&gt;decide what to put on the screen next. As with the Hidden &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;World &lt;/del&gt;bugs, confusing this decision process can have strange results. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;A fairly well-known example is with Metroid II; by &lt;/del&gt;hitting Select at appropriate times, entire lines of wall can be skipped out when the engine scrolls them on screen. This &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;also &lt;/del&gt;allows you to enter glitchy areas and skip vast sections of the map. The [[Pokémon_Diamond/Pearl/Platinum#Glitches|tweaking trick]] &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;discovered on 4th-generation Pokemon games has &lt;/del&gt;much the same effect.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When games scroll in any direction, they &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;must &lt;/ins&gt;decide what to put on the screen next. As with the Hidden &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Worlds &lt;/ins&gt;bugs, confusing this decision process can have strange results. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;By &lt;/ins&gt;hitting Select at appropriate times &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;during Metroid II&lt;/ins&gt;, entire lines of wall can be skipped out when the engine scrolls them on screen. This allows you to enter glitchy areas and skip vast sections of the map. The &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;4th-generation Pokemon games have a &lt;/ins&gt;[[Pokémon_Diamond/Pearl/Platinum#Glitches|tweaking trick]] &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;with &lt;/ins&gt;much the same effect.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Action Games==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Action Games==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;You shoot stuff, you jump around, you press buttons. Sometimes you fight a boss. All action games share a great amount of gameplay, and as such, a lot of bugs too.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Physics===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Physics===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Let's say&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/del&gt;the game you are playing runs at 60Hz. In most modern-ish PC games you can change this as long as your monitor supports it. While this frequency only tells you how many frames the graphics engine outputs per second, it also tends to be how many 'game ticks' the engine runs per second. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;This knowledge might not seem particularly useful, but when &lt;/del&gt;combined with a little understanding about how games implement physics, it can blow the game wide open.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Let's say the game you are playing runs at 60Hz. In most modern-ish PC games you can change this as long as your monitor supports it. While this frequency only tells you how many frames the graphics engine outputs per second, it also tends to be how many 'game ticks' the engine runs per second. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;When &lt;/ins&gt;combined with a little understanding about how games implement physics, it can blow the game wide open.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Almost all games &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;that have &lt;/del&gt;physics &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;at all &lt;/del&gt;will go with some kind of simplified Newtonian method. What this means is that your character (and possibly other actors in the game world) will have at least position and velocity. Most of these engines boil down to running &amp;quot;NewPosition = OldPosition + Velocity&amp;quot; every game tick, which has some interesting consequences. If you are going so fast that on consecutive game ticks you are either side of a wall, the game may not register a collision. This is used &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;on &lt;/del&gt;Half-Life to go through a barrier&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/del&gt;and &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;on &lt;/del&gt;countless other games to occasionally ignore corners.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Almost all games &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;with &lt;/ins&gt;physics will go with some kind of simplified Newtonian method. What this means is that your character (and possibly other actors in the game world) will have at least position and velocity. Most of these engines boil down to running &amp;quot;NewPosition = OldPosition + Velocity&amp;quot; every game tick, which has some interesting consequences. If you are going so fast that on consecutive game ticks you are either side of a wall, the game may not register a collision. This is used &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;with &lt;/ins&gt;Half-Life to go through a barrier and &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;with &lt;/ins&gt;countless other games to occasionally ignore corners.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Bunnyhopping===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Bunnyhopping===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;How do you reach such ludicrous speeds in the first place? A common technique (at least in First-Person Shooters) is to repeatedly &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;jump&lt;/del&gt;. This &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;counter-intuitive &lt;/del&gt;technique works&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/del&gt;because &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the engine almost always runs something like &lt;/del&gt;&amp;quot;If Player on Ground: NewVelocity = OldVelocity - Friction&amp;quot; every tick. The more time you spend off the ground, the less friction will be applied to you&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;. So far, so good&lt;/del&gt;. However, in order to actually gain speed rather than &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;keep the same speed&lt;/del&gt;, you will need to do something else. The 'something else' depends entirely on the game's engine&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;: on &lt;/del&gt;Quake&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, you need to &lt;/del&gt;continually move the mouse from side-to-side whilst using the strafe keys; Half-Life 2 mandates that you use alternate strafe keys as you land. Experiment.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;How do you reach such ludicrous speeds in the first place? A common technique (at least in First-Person Shooters) is to &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;jump &lt;/ins&gt;repeatedly. This technique works because &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;many engines calculate &lt;/ins&gt;&amp;quot;If Player on Ground: NewVelocity = OldVelocity - Friction&amp;quot; every tick. The more time you spend off the ground, the less friction will be applied to you. However, in order to actually gain speed rather than &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;maintain it&lt;/ins&gt;, you will need to do something else. The 'something else' depends entirely on the game's engine&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;. &lt;/ins&gt;Quake &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;runners &lt;/ins&gt;continually move the mouse from side-to-side whilst using the strafe keys; Half-Life 2 mandates that you use alternate strafe keys as you land. Experiment.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;As an aside, some &lt;/del&gt;games &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;actually &lt;/del&gt;implement bunnyhopping &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;consciously; &lt;/del&gt;Painkiller and Quake 3 let you &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;off with &lt;/del&gt;just jumping while holding forward.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Some &lt;/ins&gt;games &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;consciously &lt;/ins&gt;implement bunnyhopping&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;: &lt;/ins&gt;Painkiller and Quake 3 let you just jumping while holding forward.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==RPGs==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==RPGs==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Bughunting on RPGs is usually less 'playing around' and more 'pushing the envelope'. In general you should try and find the game mechanic that has the most effects on combat, and bend it until it breaks.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Integer Underflow===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Integer Underflow===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Games which need to store values do so based on how &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;big &lt;/del&gt;that value &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;will probably &lt;/del&gt;get. A standard way of doing this on old games is by using one byte, which gives an unsigned range of 0..255, or a signed range of -128..127. Unless the game &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;checks &lt;/del&gt;that the value &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;does not '&lt;/del&gt;go below the minimum&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'&lt;/del&gt;, you can often cause the value to wrap around to its maximum. This &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;has obvious consequences &lt;/del&gt;if the value in question is your character's Strength or Level. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;On &lt;/del&gt;Baldur's Gate you can use an [[Infinity_Engine#Inventory_Stack_Underflow|item-swapping trick]] to wrap an item's quantity value around to 65535, the two byte unsigned maximum. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;On &lt;/del&gt;Suikoden II you can use the Kindness Rune&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'s attack-increasing ability &lt;/del&gt;to add 255 by making your Kindness value lower than 0&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;. The applications are endless, and often, very profound&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Games which need to store values do so based on how &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;large &lt;/ins&gt;that value &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;might possibly &lt;/ins&gt;get. A standard way of doing this on old games is by using one byte, which gives an unsigned range of 0..255, or a signed range of -128..127. Unless the game &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ensures &lt;/ins&gt;that the value &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;cannot &lt;/ins&gt;go below the minimum, you can often cause the value to wrap around to its maximum. This &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;can be very useful &lt;/ins&gt;if the value in question is your character's Strength or Level. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;With &lt;/ins&gt;Baldur's Gate you can use an [[Infinity_Engine#Inventory_Stack_Underflow|item-swapping trick]] to wrap an item's quantity value around to 65535, the two byte unsigned maximum. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;With &lt;/ins&gt;Suikoden II you can use the Kindness Rune to add 255 &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Attack &lt;/ins&gt;by making your Kindness value lower than 0.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Memory Corruption===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Memory Corruption===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;A massive topic, and one that &lt;/del&gt;can break &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;the &lt;/del&gt;game &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;more often than not&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;As with Integer Underflow, it occurs when &lt;/del&gt;the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;programmer was not careful enough in implementing something&lt;/del&gt;. A well-known corruption bug occurs on Final Fantasy VI when Relm uses Sketch &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;and it misses (because you cast &lt;/del&gt;Vanish &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;on &lt;/del&gt;the target &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;beforehand&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;) This causes the &lt;/del&gt;program &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;to try &lt;/del&gt;to read an area of memory &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;which &lt;/del&gt;does not contain &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;an &lt;/del&gt;enemy&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'s &lt;/del&gt;data, with &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;often catastrophic &lt;/del&gt;results.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Memory corruption &lt;/ins&gt;can &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;be used to completely &lt;/ins&gt;break &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;open a &lt;/ins&gt;game. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;This volatile type of bug can have profound effects on &lt;/ins&gt;the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;stability and state of the game&lt;/ins&gt;. A well-known corruption bug occurs on Final Fantasy VI when Relm uses Sketch &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;after &lt;/ins&gt;Vanish&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, causing it to miss &lt;/ins&gt;the target. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;The &lt;/ins&gt;program &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;will then attempt &lt;/ins&gt;to read an area of memory &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;that &lt;/ins&gt;does not contain &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;any &lt;/ins&gt;enemy data, with &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;potentially exploitable &lt;/ins&gt;results.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Enhasa</name></author>	</entry>

	<entry>
		<id>https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;diff=3612&amp;oldid=prev</id>
		<title>Lag.Com: /* Memory Corruption */ slight grammar fixes</title>
		<link rel="alternate" type="text/html" href="https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;diff=3612&amp;oldid=prev"/>
				<updated>2009-08-29T00:27:18Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Memory Corruption: &lt;/span&gt; slight grammar fixes&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 00:27, 29 August 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 33:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 33:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Memory Corruption===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Memory Corruption===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A massive topic, and one that can break the game more often than not. As with Integer Underflow, it occurs when the programmer was not careful enough in implementing something. A well-known corruption bug occurs on Final Fantasy VI when Relm uses Sketch and it misses (because you cast Vanish on &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;it &lt;/del&gt;beforehand&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;)&lt;/del&gt;. This causes the program to try to read an area of memory which does not contain an enemy's data, with often catastrophic results.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A massive topic, and one that can break the game more often than not. As with Integer Underflow, it occurs when the programmer was not careful enough in implementing something. A well-known corruption bug occurs on Final Fantasy VI when Relm uses Sketch and it misses (because you cast Vanish on &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;the target &lt;/ins&gt;beforehand.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;) &lt;/ins&gt;This causes the program to try to read an area of memory which does not contain an enemy's data, with often catastrophic results.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lag.Com</name></author>	</entry>

	<entry>
		<id>https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;diff=3597&amp;oldid=prev</id>
		<title>Greenalink: /* Pausing */</title>
		<link rel="alternate" type="text/html" href="https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;diff=3597&amp;oldid=prev"/>
				<updated>2009-08-28T17:13:40Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Pausing&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 17:13, 28 August 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Games share a lot of code, no matter the genre. Inventory management, quest/plot completion and conversation trees are a common factor, especially among today's &amp;quot;Action RPGs&amp;quot;. As with any code, they are breakable.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Games share a lot of code, no matter the genre. Inventory management, quest/plot completion and conversation trees are a common factor, especially among today's &amp;quot;Action RPGs&amp;quot;. As with any code, they are breakable.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Pausing===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Pausing===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Pause may seem like a simple thing to implement, but in many cases it is done poorly. This mainly applies to older games. Most commonly it confuses timed events, such as reloading or hitstun. You can use this trick on Mega Man &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;2 &lt;/del&gt;to repeatedly hit bosses with the Lightning weapon, by pausing each time it hits, and waiting a short duration for the boss's hitstun to reset. It also changes Mega Man's vertical velocity to zero on some games, allowing you to make extra-long jumps.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Pause may seem like a simple thing to implement, but in many cases it is done poorly. This mainly applies to older games. Most commonly it confuses timed events, such as reloading or hitstun. You can use this trick on Mega Man &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;1 &lt;/ins&gt;to repeatedly hit bosses with the Lightning weapon, by pausing each time it hits, and waiting a short duration for the boss's hitstun to reset. It also changes Mega Man's vertical velocity to zero on some games, allowing you to make extra-long jumps.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Hidden Worlds===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Hidden Worlds===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On games where the world is made up of discrete rooms, there must be some mechanic whereby the game decides which room to put you in next, usually when you reach a boundary. If this mechanic were confused, perhaps by another event occuring at the same instant the boundary is triggered, then it may send you to the wrong place. An alternate way of triggering this is by triggering a boundary while facing the wrong direction. This often leads to completely un-navigable areas or copies of other rooms without the contents. The Pokemon series are known for their 'Glitch Cities' which can be entered by exiting the Safari Zone in an unintended fashion.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On games where the world is made up of discrete rooms, there must be some mechanic whereby the game decides which room to put you in next, usually when you reach a boundary. If this mechanic were confused, perhaps by another event occuring at the same instant the boundary is triggered, then it may send you to the wrong place. An alternate way of triggering this is by triggering a boundary while facing the wrong direction. This often leads to completely un-navigable areas or copies of other rooms without the contents. The Pokemon series are known for their 'Glitch Cities' which can be entered by exiting the Safari Zone in an unintended fashion.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Greenalink</name></author>	</entry>

	<entry>
		<id>https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;diff=3577&amp;oldid=prev</id>
		<title>Moozooh: Added a link to Generic techiques.</title>
		<link rel="alternate" type="text/html" href="https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;diff=3577&amp;oldid=prev"/>
				<updated>2009-08-28T13:15:25Z</updated>
		
		<summary type="html">&lt;p&gt;Added a link to Generic techiques.&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 13:15, 28 August 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;No program is perfect. By extension, no game is bug-free. The techniques here will help you find them, if none are already known. Hopefully the bugs you find will be useful, and you will then add them to this wiki on the appropriate game page!&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;No program is perfect. By extension, no game is bug-free. The techniques here will help you find them, if none are already known. Hopefully the bugs you find will be useful, and you will then add them to this wiki on the appropriate game page!&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;See also: [[Generic techniques]].&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==All Games==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==All Games==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Moozooh</name></author>	</entry>

	<entry>
		<id>https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;diff=3567&amp;oldid=prev</id>
		<title>Lag.Com: new idea, let me know if it makes sense / fix mistakes</title>
		<link rel="alternate" type="text/html" href="https://kb.speeddemosarchive.com/index.php?title=Bughunting&amp;diff=3567&amp;oldid=prev"/>
				<updated>2009-08-28T11:10:04Z</updated>
		
		<summary type="html">&lt;p&gt;new idea, let me know if it makes sense / fix mistakes&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;No program is perfect. By extension, no game is bug-free. The techniques here will help you find them, if none are already known. Hopefully the bugs you find will be useful, and you will then add them to this wiki on the appropriate game page!&lt;br /&gt;
&lt;br /&gt;
==All Games==&lt;br /&gt;
Games share a lot of code, no matter the genre. Inventory management, quest/plot completion and conversation trees are a common factor, especially among today's &amp;quot;Action RPGs&amp;quot;. As with any code, they are breakable.&lt;br /&gt;
===Pausing===&lt;br /&gt;
Pause may seem like a simple thing to implement, but in many cases it is done poorly. This mainly applies to older games. Most commonly it confuses timed events, such as reloading or hitstun. You can use this trick on Mega Man 2 to repeatedly hit bosses with the Lightning weapon, by pausing each time it hits, and waiting a short duration for the boss's hitstun to reset. It also changes Mega Man's vertical velocity to zero on some games, allowing you to make extra-long jumps.&lt;br /&gt;
===Hidden Worlds===&lt;br /&gt;
On games where the world is made up of discrete rooms, there must be some mechanic whereby the game decides which room to put you in next, usually when you reach a boundary. If this mechanic were confused, perhaps by another event occuring at the same instant the boundary is triggered, then it may send you to the wrong place. An alternate way of triggering this is by triggering a boundary while facing the wrong direction. This often leads to completely un-navigable areas or copies of other rooms without the contents. The Pokemon series are known for their 'Glitch Cities' which can be entered by exiting the Safari Zone in an unintended fashion.&lt;br /&gt;
===Scrolling===&lt;br /&gt;
When games scroll (in any direction), they have to decide what to put on the screen next. As with the Hidden World bugs, confusing this decision process can have strange results. A fairly well-known example is with Metroid II; by hitting Select at appropriate times, entire lines of wall can be skipped out when the engine scrolls them on screen. This also allows you to enter glitchy areas and skip vast sections of the map. The [[Pokémon_Diamond/Pearl/Platinum#Glitches|tweaking trick]] discovered on 4th-generation Pokemon games has much the same effect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Action Games==&lt;br /&gt;
You shoot stuff, you jump around, you press buttons. Sometimes you fight a boss. All action games share a great amount of gameplay, and as such, a lot of bugs too.&lt;br /&gt;
===Physics===&lt;br /&gt;
Let's say, the game you are playing runs at 60Hz. In most modern-ish PC games you can change this as long as your monitor supports it. While this frequency only tells you how many frames the graphics engine outputs per second, it also tends to be how many 'game ticks' the engine runs per second. This knowledge might not seem particularly useful, but when combined with a little understanding about how games implement physics, it can blow the game wide open.&lt;br /&gt;
&lt;br /&gt;
Almost all games that have physics at all will go with some kind of simplified Newtonian method. What this means is that your character (and possibly other actors in the game world) will have at least position and velocity. Most of these engines boil down to running &amp;quot;NewPosition = OldPosition + Velocity&amp;quot; every game tick, which has some interesting consequences. If you are going so fast that on consecutive game ticks you are either side of a wall, the game may not register a collision. This is used on Half-Life to go through a barrier, and on countless other games to occasionally ignore corners.&lt;br /&gt;
&lt;br /&gt;
===Bunnyhopping===&lt;br /&gt;
How do you reach such ludicrous speeds in the first place? A common technique (at least in First-Person Shooters) is to repeatedly jump. This counter-intuitive technique works, because the engine almost always runs something like &amp;quot;If Player on Ground: NewVelocity = OldVelocity - Friction&amp;quot; every tick. The more time you spend off the ground, the less friction will be applied to you. So far, so good. However, in order to actually gain speed rather than keep the same speed, you will need to do something else. The 'something else' depends entirely on the game's engine: on Quake, you need to continually move the mouse from side-to-side whilst using the strafe keys; Half-Life 2 mandates that you use alternate strafe keys as you land. Experiment.&lt;br /&gt;
&lt;br /&gt;
As an aside, some games actually implement bunnyhopping consciously; Painkiller and Quake 3 let you off with just jumping while holding forward.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RPGs==&lt;br /&gt;
Bughunting on RPGs is usually less 'playing around' and more 'pushing the envelope'. In general you should try and find the game mechanic that has the most effects on combat, and bend it until it breaks.&lt;br /&gt;
===Integer Underflow===&lt;br /&gt;
Games which need to store values do so based on how big that value will probably get. A standard way of doing this on old games is by using one byte, which gives an unsigned range of 0..255, or a signed range of -128..127. Unless the game checks that the value does not 'go below the minimum', you can often cause the value to wrap around to its maximum. This has obvious consequences if the value in question is your character's Strength or Level. On Baldur's Gate you can use an [[Infinity_Engine#Inventory_Stack_Underflow|item-swapping trick]] to wrap an item's quantity value around to 65535, the two byte unsigned maximum. On Suikoden II you can use the Kindness Rune's attack-increasing ability to add 255 by making your Kindness value lower than 0. The applications are endless, and often, very profound.&lt;br /&gt;
&lt;br /&gt;
===Memory Corruption===&lt;br /&gt;
A massive topic, and one that can break the game more often than not. As with Integer Underflow, it occurs when the programmer was not careful enough in implementing something. A well-known corruption bug occurs on Final Fantasy VI when Relm uses Sketch and it misses (because you cast Vanish on it beforehand). This causes the program to try to read an area of memory which does not contain an enemy's data, with often catastrophic results.&lt;/div&gt;</summary>
		<author><name>Lag.Com</name></author>	</entry>

	</feed>