<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://sadocs.unreliable.network/index.php?action=history&amp;feed=atom&amp;title=Creating_Mods%2FCheat_Codes</id>
	<title>Creating Mods/Cheat Codes - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://sadocs.unreliable.network/index.php?action=history&amp;feed=atom&amp;title=Creating_Mods%2FCheat_Codes"/>
	<link rel="alternate" type="text/html" href="https://sadocs.unreliable.network/index.php?title=Creating_Mods/Cheat_Codes&amp;action=history"/>
	<updated>2026-05-01T15:24:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://sadocs.unreliable.network/index.php?title=Creating_Mods/Cheat_Codes&amp;diff=406&amp;oldid=prev</id>
		<title>PkR: PkR moved page Cheat Codes to Creating Mods/Cheat Codes: title consistency</title>
		<link rel="alternate" type="text/html" href="https://sadocs.unreliable.network/index.php?title=Creating_Mods/Cheat_Codes&amp;diff=406&amp;oldid=prev"/>
		<updated>2025-10-13T08:13:07Z</updated>

		<summary type="html">&lt;p&gt;PkR moved page &lt;a href=&quot;/wiki/Cheat_Codes&quot; class=&quot;mw-redirect&quot; title=&quot;Cheat Codes&quot;&gt;Cheat Codes&lt;/a&gt; to &lt;a href=&quot;/wiki/Creating_Mods/Cheat_Codes&quot; title=&quot;Creating Mods/Cheat Codes&quot;&gt;Creating Mods/Cheat Codes&lt;/a&gt;: title consistency&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:13, 13 October 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>PkR</name></author>
	</entry>
	<entry>
		<id>https://sadocs.unreliable.network/index.php?title=Creating_Mods/Cheat_Codes&amp;diff=288&amp;oldid=prev</id>
		<title>ItsEasyActually: ItsEasyActually moved page Creating mods/Cheat Codes to Cheat Codes: Moving to non-sub name title.</title>
		<link rel="alternate" type="text/html" href="https://sadocs.unreliable.network/index.php?title=Creating_Mods/Cheat_Codes&amp;diff=288&amp;oldid=prev"/>
		<updated>2025-10-05T20:52:46Z</updated>

		<summary type="html">&lt;p&gt;ItsEasyActually moved page &lt;a href=&quot;/wiki/Creating_mods/Cheat_Codes&quot; class=&quot;mw-redirect&quot; title=&quot;Creating mods/Cheat Codes&quot;&gt;Creating mods/Cheat Codes&lt;/a&gt; to &lt;a href=&quot;/wiki/Cheat_Codes&quot; class=&quot;mw-redirect&quot; title=&quot;Cheat Codes&quot;&gt;Cheat Codes&lt;/a&gt;: Moving to non-sub name title.&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:52, 5 October 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>ItsEasyActually</name></author>
	</entry>
	<entry>
		<id>https://sadocs.unreliable.network/index.php?title=Creating_Mods/Cheat_Codes&amp;diff=286&amp;oldid=prev</id>
		<title>Kell: Add section links and fix minor mistake</title>
		<link rel="alternate" type="text/html" href="https://sadocs.unreliable.network/index.php?title=Creating_Mods/Cheat_Codes&amp;diff=286&amp;oldid=prev"/>
		<updated>2025-10-05T20:32:31Z</updated>

		<summary type="html">&lt;p&gt;Add section links and fix minor mistake&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:32, 5 October 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot;&gt;Line 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 18:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Description&amp;#039;&amp;#039;&amp;#039;: description of the cheat code.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Description&amp;#039;&amp;#039;&amp;#039;: description of the cheat code.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;To write the code, see Writing a cheat code.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;To write the code, see &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Creating mods/Cheat Codes#&lt;/ins&gt;Writing a cheat code&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Writing a cheat code]]&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When finished, save the cheat code, enable the mod and click &amp;quot;Save&amp;quot; to compile the cheat codes.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When finished, save the cheat code, enable the mod and click &amp;quot;Save&amp;quot; to compile the cheat codes.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l40&quot;&gt;Line 40:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 40:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Name*&amp;#039;&amp;#039;&amp;#039;: short name for the cheat code.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Name*&amp;#039;&amp;#039;&amp;#039;: short name for the cheat code.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Required&amp;#039;&amp;#039;&amp;#039;: the cheat code will be forced on and won&amp;#039;t appear in the Mod Manager &amp;quot;Codes&amp;quot; tab.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Required&amp;#039;&amp;#039;&amp;#039;: the cheat code will be forced on and won&amp;#039;t appear in the Mod Manager &amp;quot;Codes&amp;quot; tab.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;* &#039;&#039;&#039;Code&#039;&#039;&#039;: the actual code, see Writing a cheat code.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;* &#039;&#039;&#039;Code&#039;&#039;&#039;: the actual code, see &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Creating mods/Cheat Codes#&lt;/ins&gt;Writing a cheat code&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Writing a cheat code]]&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Author&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Category&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Description&amp;#039;&amp;#039;&amp;#039; are optional.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Author&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Category&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Description&amp;#039;&amp;#039;&amp;#039; are optional.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l171&quot;&gt;Line 171:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 171:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Special operations ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== Special operations ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;  [opcode] [address] [value] &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(repeat count)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; 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;  [opcode] [address] [value]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!Operation&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!Operation&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kell</name></author>
	</entry>
	<entry>
		<id>https://sadocs.unreliable.network/index.php?title=Creating_Mods/Cheat_Codes&amp;diff=285&amp;oldid=prev</id>
		<title>Kell: Initial draft</title>
		<link rel="alternate" type="text/html" href="https://sadocs.unreliable.network/index.php?title=Creating_Mods/Cheat_Codes&amp;diff=285&amp;oldid=prev"/>
		<updated>2025-10-05T20:27:43Z</updated>

		<summary type="html">&lt;p&gt;Initial draft&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The Sonic Adventure DX and Sonic Adventure 2: Battle Mod Loaders allow you to edit the game&amp;#039;s code and memory without resorting to a DLL mod. The syntax is similar to cheat code for consoles, such as Action Replay code. This is useful for simple modifications where a DLL would be overkill.&lt;br /&gt;
&lt;br /&gt;
== Creating a cheat code ==&lt;br /&gt;
&lt;br /&gt;
=== Using the SA Mod Manager ===&lt;br /&gt;
First edit your mod by right clicking it and clicking on Edit mod, or by selecting it and pressing Ctrl + E.&lt;br /&gt;
[[File:Samm-editmod-context.png|none|508x508px]]&lt;br /&gt;
Then go in the &amp;quot;Codes&amp;quot; tab and click on &amp;quot;New code&amp;quot;.&lt;br /&gt;
[[File:Samm-editmode-codestab.png|none|502x502px]]&lt;br /&gt;
You are now in the cheat code editor :&lt;br /&gt;
[[File:Samm-editmode-codeeditor.png|none|500x500px]]&lt;br /&gt;
Fields are:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Name*&amp;#039;&amp;#039;&amp;#039;: short name for the cheat code.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Author&amp;#039;&amp;#039;&amp;#039;: author(s) of the cheat code.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Type*&amp;#039;&amp;#039;&amp;#039;: &amp;quot;Code&amp;quot; will make your cheat code run every frame, &amp;quot;Patch&amp;quot; will make it run once at start up.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Is Required&amp;#039;&amp;#039;&amp;#039;: if checked, the cheat code will be forced on and won&amp;#039;t appear in the Mod Manager &amp;quot;Codes&amp;quot; tab.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Description&amp;#039;&amp;#039;&amp;#039;: description of the cheat code.&lt;br /&gt;
&lt;br /&gt;
To write the code, see Writing a cheat code.&lt;br /&gt;
&lt;br /&gt;
When finished, save the cheat code, enable the mod and click &amp;quot;Save&amp;quot; to compile the cheat codes.&lt;br /&gt;
&lt;br /&gt;
=== Using notepad or another editor ===&lt;br /&gt;
In your mod folder, create an empty text file, preferably called &amp;quot;Codes.lst&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Then open your mod.ini to add the following line:&lt;br /&gt;
 Codes=Codes.lst&lt;br /&gt;
Save your mod.ini, then open Codes.lst with the editor of your choice.&lt;br /&gt;
&lt;br /&gt;
Here is the structure of a cheat code:&lt;br /&gt;
 [Type] [Name] (Required)&lt;br /&gt;
 [Code]&lt;br /&gt;
 Author [Author]&lt;br /&gt;
 Category [Category]&lt;br /&gt;
 Description [Description]&lt;br /&gt;
Fields are:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Type*&amp;#039;&amp;#039;&amp;#039;: &amp;quot;Code&amp;quot; will make your cheat code run every frame, &amp;quot;Patch&amp;quot; will make it run once at start up.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Name*&amp;#039;&amp;#039;&amp;#039;: short name for the cheat code.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Required&amp;#039;&amp;#039;&amp;#039;: the cheat code will be forced on and won&amp;#039;t appear in the Mod Manager &amp;quot;Codes&amp;quot; tab.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Code&amp;#039;&amp;#039;&amp;#039;: the actual code, see Writing a cheat code.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Author&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Category&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;Description&amp;#039;&amp;#039;&amp;#039; are optional.&lt;br /&gt;
&lt;br /&gt;
Once finished, save the Codes.lst file, open the Mod Manager, enable the mod if not already and click &amp;quot;Save&amp;quot; to compile the cheat codes.&lt;br /&gt;
&lt;br /&gt;
== Writing a cheat code ==&lt;br /&gt;
See the full [https://github.com/X-Hax/sadx-mod-loader/blob/master/doc/codes.md documentation].&lt;br /&gt;
&lt;br /&gt;
=== Memory operations ===&lt;br /&gt;
Each line follows the following format:&lt;br /&gt;
 [opcode] [address] [value] (repeat count)&lt;br /&gt;
The memory operations you can use are:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Operation&lt;br /&gt;
!Opcodes&lt;br /&gt;
!Description&lt;br /&gt;
!C equivalent&lt;br /&gt;
|-&lt;br /&gt;
|Write&lt;br /&gt;
|write8&lt;br /&gt;
write16&lt;br /&gt;
write32&lt;br /&gt;
writefloat&lt;br /&gt;
|Write value at address&lt;br /&gt;
|*address = value;&lt;br /&gt;
|-&lt;br /&gt;
|Add&lt;br /&gt;
|add8&lt;br /&gt;
add16&lt;br /&gt;
add32&lt;br /&gt;
addfloat&lt;br /&gt;
|Add value at address&lt;br /&gt;
|*address += value;&lt;br /&gt;
|-&lt;br /&gt;
|Subtract&lt;br /&gt;
|sub8&lt;br /&gt;
sub16&lt;br /&gt;
sub32&lt;br /&gt;
subfloat&lt;br /&gt;
|Subtract value at address&lt;br /&gt;
|*address -= value;&lt;br /&gt;
|-&lt;br /&gt;
|Multiply&lt;br /&gt;
|mulu8&lt;br /&gt;
mulu16&lt;br /&gt;
mulu32&lt;br /&gt;
muls8&lt;br /&gt;
muls16&lt;br /&gt;
muls32&lt;br /&gt;
mulfloat&lt;br /&gt;
|Multiply value at address&lt;br /&gt;
|*address *= value;&lt;br /&gt;
|-&lt;br /&gt;
|Divide&lt;br /&gt;
|divu8&lt;br /&gt;
divu16&lt;br /&gt;
divu32&lt;br /&gt;
divs8&lt;br /&gt;
divs16&lt;br /&gt;
divs32&lt;br /&gt;
divfloat&lt;br /&gt;
|Divide value at address&lt;br /&gt;
|*address /= value;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Bitwise operations ===&lt;br /&gt;
These are more advanced operations as they operate on the bit level.&lt;br /&gt;
 [opcode] [address] [value] (repeat count)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Operation&lt;br /&gt;
!Opcodes&lt;br /&gt;
!Description&lt;br /&gt;
!C equivalent&lt;br /&gt;
|-&lt;br /&gt;
|Shift left&lt;br /&gt;
|shl8&lt;br /&gt;
shl16&lt;br /&gt;
shl32&lt;br /&gt;
|Shift bits at address to the left&lt;br /&gt;
|*address &amp;lt;&amp;lt;= value;&lt;br /&gt;
|-&lt;br /&gt;
|Shift right&lt;br /&gt;
|shrs8&lt;br /&gt;
shrs16&lt;br /&gt;
shrs32&lt;br /&gt;
shru8&lt;br /&gt;
shru16&lt;br /&gt;
shru32&lt;br /&gt;
|Shift bits at address to the right&lt;br /&gt;
|*address &amp;gt;&amp;gt;= value;&lt;br /&gt;
|-&lt;br /&gt;
|AND&lt;br /&gt;
|and8&lt;br /&gt;
and16&lt;br /&gt;
and32&lt;br /&gt;
|AND bits at address&lt;br /&gt;
Often used to remove flags&lt;br /&gt;
|*address &amp;amp;= value;&lt;br /&gt;
|-&lt;br /&gt;
|OR&lt;br /&gt;
|or8&lt;br /&gt;
or16&lt;br /&gt;
or32&lt;br /&gt;
|OR bits at address&lt;br /&gt;
Often used to add flags&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;*address |= value;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|XOR&lt;br /&gt;
|xor8&lt;br /&gt;
xor16&lt;br /&gt;
xor32&lt;br /&gt;
|XOR bits at address&lt;br /&gt;
|*address ^= value;&lt;br /&gt;
|-&lt;br /&gt;
|Rotate left&lt;br /&gt;
|rol8&lt;br /&gt;
rol16&lt;br /&gt;
rol32&lt;br /&gt;
|Rotate bits left&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Rotate right&lt;br /&gt;
|ror8&lt;br /&gt;
ror16&lt;br /&gt;
ror32&lt;br /&gt;
|Rotate bits right&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Special operations ===&lt;br /&gt;
 [opcode] [address] [value] (repeat count)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Operation&lt;br /&gt;
!Opcodes&lt;br /&gt;
!Description&lt;br /&gt;
!C equivalent&lt;br /&gt;
|-&lt;br /&gt;
|Write NOP&lt;br /&gt;
|writenop&lt;br /&gt;
|Write NOP opcode at address N times&lt;br /&gt;
Often used to remove a call (writenop address 5)&lt;br /&gt;
|WriteData&amp;lt;value&amp;gt;((void*)address, 0x90);&lt;br /&gt;
|-&lt;br /&gt;
|Write JUMP&lt;br /&gt;
|writejump&lt;br /&gt;
|Write a JUMP opcode at address followed by rel jump address&lt;br /&gt;
Often used to redirect a function to another&lt;br /&gt;
|WriteJump((void*)address, (void*)value);&lt;br /&gt;
|-&lt;br /&gt;
|Write CALL&lt;br /&gt;
|writecall&lt;br /&gt;
|Write a CALL opcode at address followed by rel call address&lt;br /&gt;
Often used to replace a call to a function with another&lt;br /&gt;
|WriteCall((void*)address, (void*)value);&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
The cheat code system supports conditions and branching.&lt;br /&gt;
 [condition opcode] [address] [compared value] (repeat count)&lt;br /&gt;
 	...&lt;br /&gt;
 &amp;#039;&amp;#039;else&lt;br /&gt;
 	...&amp;#039;&amp;#039;&lt;br /&gt;
 endif&lt;br /&gt;
Here are the conditions available:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Operation&lt;br /&gt;
!Opcodes&lt;br /&gt;
!Description&lt;br /&gt;
!C equivalent&lt;br /&gt;
|-&lt;br /&gt;
|If equal&lt;br /&gt;
|ifeq8&lt;br /&gt;
ifeq16&lt;br /&gt;
ifeq32&lt;br /&gt;
ifeqfloat&lt;br /&gt;
|Check if value at address is equal&lt;br /&gt;
|if (*address == value)&lt;br /&gt;
|-&lt;br /&gt;
|If not equal&lt;br /&gt;
|ifne8&lt;br /&gt;
ifne16&lt;br /&gt;
ifne32&lt;br /&gt;
ifnefloat&lt;br /&gt;
|Check if value at address is different&lt;br /&gt;
|if (*address != value)&lt;br /&gt;
|-&lt;br /&gt;
|If lower&lt;br /&gt;
|ifltu8&lt;br /&gt;
ifltu16&lt;br /&gt;
ifltu32&lt;br /&gt;
iflts8&lt;br /&gt;
iflts16&lt;br /&gt;
iflts32&lt;br /&gt;
ifltfloat&lt;br /&gt;
|Check if value at address is lower&lt;br /&gt;
|if (*address &amp;lt; value)&lt;br /&gt;
|-&lt;br /&gt;
|If lower or equal&lt;br /&gt;
|ifltequ8&lt;br /&gt;
ifltequ16&lt;br /&gt;
ifltequ32&lt;br /&gt;
iflteqs8&lt;br /&gt;
iflteqs16&lt;br /&gt;
iflteqs32&lt;br /&gt;
iflteqfloat&lt;br /&gt;
|Check if value at address is lower or equal&lt;br /&gt;
|if (*address &amp;lt;= value)&lt;br /&gt;
|-&lt;br /&gt;
|If greater&lt;br /&gt;
|ifgtu8&lt;br /&gt;
ifgtu16&lt;br /&gt;
ifgtu32&lt;br /&gt;
ifgts8&lt;br /&gt;
ifgts16&lt;br /&gt;
ifgts32&lt;br /&gt;
ifgtfloat&lt;br /&gt;
|Check if value at address is greater&lt;br /&gt;
|if (*address &amp;gt; value)&lt;br /&gt;
|-&lt;br /&gt;
|If greater or equal&lt;br /&gt;
|ifgtequ8&lt;br /&gt;
ifgtequ16&lt;br /&gt;
ifgtequ32&lt;br /&gt;
ifgteqs8&lt;br /&gt;
ifgteqs16&lt;br /&gt;
ifgteqs32&lt;br /&gt;
ifgteqfloat&lt;br /&gt;
|Check if value at address is greater or equal&lt;br /&gt;
|if (*address &amp;gt;= value)&lt;br /&gt;
|-&lt;br /&gt;
|If mask&lt;br /&gt;
|ifmask8&lt;br /&gt;
ifmask16&lt;br /&gt;
ifmask32&lt;br /&gt;
|Check if value at address has specific bits&lt;br /&gt;
Often used to check flags&lt;br /&gt;
|if ((*address &amp;amp; value) == value)&lt;br /&gt;
|-&lt;br /&gt;
|If key pressed&lt;br /&gt;
|ifkbkey [keycode]&lt;br /&gt;
|Check if keyboard key is pressed&lt;br /&gt;
See Windows [https://learn.microsoft.com/fr-fr/windows/win32/inputdev/virtual-key-codes virtual key codes].&lt;br /&gt;
|if (GetAsyncKeyState(value))&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Registers ===&lt;br /&gt;
The cheat code system has 16 registers available, you can use them as variables.&lt;br /&gt;
&lt;br /&gt;
Most opcodes have a register equivalent, simply add &amp;quot;reg&amp;quot; before the type (writereg8, divregu8, ifmaskreg8...)&lt;br /&gt;
 [opcode] [address] [value] (repeat count)&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Operation&lt;br /&gt;
!Opcodes&lt;br /&gt;
!Description&lt;br /&gt;
!C equivalent&lt;br /&gt;
|-&lt;br /&gt;
|Read&lt;br /&gt;
|readreg8&lt;br /&gt;
readreg16&lt;br /&gt;
readreg32&lt;br /&gt;
|Read value at address into register&lt;br /&gt;
|reg[value] = *address;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Values format ===&lt;br /&gt;
Values can be in decimal, hexadecimal, or float format.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
|Decimal&lt;br /&gt;
|10&lt;br /&gt;
|-&lt;br /&gt;
|Hexadecimal&lt;br /&gt;
|0xA&lt;br /&gt;
|-&lt;br /&gt;
|Float&lt;br /&gt;
|10.0&lt;br /&gt;
|}&lt;br /&gt;
Repeat count should be preceded with x.&lt;br /&gt;
&lt;br /&gt;
Addresses can be in hexadecimal or pointer chain format.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!Example&lt;br /&gt;
|-&lt;br /&gt;
|Hexadecimal&lt;br /&gt;
|03B0F0FC&lt;br /&gt;
|-&lt;br /&gt;
|Pointer chain&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;p03B42E30|20|C0|6&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
These examples use Sonic Adventure DX (2004) addresses.&lt;br /&gt;
&lt;br /&gt;
=== Write to memory ===&lt;br /&gt;
 write16 03B0F0E4 999&lt;br /&gt;
This forces the ring count to 999 every frame.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;write16&amp;lt;/code&amp;gt; means that it will write to 2 bytes. This is because the Rings variable in SADX is a 2 bytes (a &amp;quot;short&amp;quot; or &amp;quot;Sint16&amp;quot; in c++).&lt;br /&gt;
* &amp;lt;code&amp;gt;03B0F0E4&amp;lt;/code&amp;gt; is the hexadecimal address of the Rings variable&lt;br /&gt;
* &amp;lt;code&amp;gt;999&amp;lt;/code&amp;gt; is the 2-byte values that is going to be written at the provided address.&lt;br /&gt;
&lt;br /&gt;
 writefloat 03B0F0FC 1.0&lt;br /&gt;
This forces the gravity to be upside down.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;writefloat&amp;lt;/code&amp;gt; means that the edited value is a (single precision) floating point value.&lt;br /&gt;
* &amp;lt;code&amp;gt;03B0F0FC&amp;lt;/code&amp;gt; is the hexadecimal address of the up gravity direction.&lt;br /&gt;
* &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt; is a float value that we will be writing, 1.0 for up gravity means upward.&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
 ifltu32 03B0F14C 9999&lt;br /&gt;
 	add32 03B0F14C 1&lt;br /&gt;
 endif&lt;br /&gt;
This increased the score counter every frame until it reaches 9999.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ifltu32&amp;lt;/code&amp;gt; means &amp;quot;if value is inferior to3 (9999 here)&lt;br /&gt;
* &amp;lt;code&amp;gt;03B0F14C&amp;lt;/code&amp;gt; is the level score.&lt;br /&gt;
&lt;br /&gt;
 ifmask32 03B0E9D0 0x10&lt;br /&gt;
 	mulfloat 03B0F0FC 1.05&lt;br /&gt;
 endif&lt;br /&gt;
This increases the gravity when you press d-pad up.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ifmask32&amp;lt;/code&amp;gt; means we are checking if the value at address has specific bits&lt;br /&gt;
* &amp;lt;code&amp;gt;03B0E9D0&amp;lt;/code&amp;gt; is the hexadecimal address of the pressed buttons variable, each bit corresponds to a button.&lt;br /&gt;
* &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt; is the bit mask for d-pad up.&lt;br /&gt;
&lt;br /&gt;
=== More examples ===&lt;br /&gt;
Check the [https://github.com/X-Hax/sadx-mod-loader/blob/master/data/Codes.lst SADX Mod Loader cheat codes] and [https://github.com/X-Hax/sa2-mod-loader/blob/master/data/Codes.lst SA2 Mod Loader cheat codes] for more examples.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
To get addresses:&lt;br /&gt;
&lt;br /&gt;
* Check the RAM editing pages on sonicretro ([https://info.sonicretro.org/SCHG:Sonic_Adventure_DX:_PC/RAM_Editing SADX]/[https://info.sonicretro.org/SCHG:Sonic_Adventure_2_(PC)/RAM_Editing SA2PC])&lt;br /&gt;
* Start disassembling the game with IDA Pro or Ghidra&lt;br /&gt;
* Ask us for help on Discord&lt;/div&gt;</summary>
		<author><name>Kell</name></author>
	</entry>
</feed>