<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.skytemple.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Frostbyte</id>
	<title>SkyTemple - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.skytemple.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Frostbyte"/>
	<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php/Special:Contributions/Frostbyte"/>
	<updated>2026-04-08T08:55:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.7</generator>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=How_to_add_a_second_partner&amp;diff=1495</id>
		<title>How to add a second partner</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=How_to_add_a_second_partner&amp;diff=1495"/>
		<updated>2026-03-27T23:18:13Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Remove Drive link since everything has been ported now&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &#039;&#039;&#039;How to Implement a Second Partner in SkyTemple&#039;&#039;&#039; ==&lt;br /&gt;
  &#039;&#039;&#039;Who this guide is for:&#039;&#039;&#039; People who want to have a second partner, for a total party of three pokemon for your ROM Hack. This may work to have a party of four as well but I have not tested it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Considerations:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
# Having a three member party also means having more pokemon talking and being present in cutscenes, thus more scripting and writing on your part.&lt;br /&gt;
# If the Chimeco Assembly is enabled, the player will be able to remove the second partner. You can either let them do this, or delete the Chimeco Assembly. &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Adding a Pokemon To Your Starting Party (Credit: @Ajifer on the SkyTemple Discord)&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
# Download this patch by Adex (please credit appropriately): &amp;lt;nowiki&amp;gt;https://github.com/Adex-8x/EoS-ASM-Effects/blob/main/special_processes/monster_entry/add_mentry_to_party.asm&amp;lt;/nowiki&amp;gt;  &lt;br /&gt;
# The above is a custom special process. In order to import custom special processes, you&#039;ll first need to apply the patch &amp;quot;ExtractSPCode&amp;quot; from Patches &amp;gt; ASM (double click) &amp;gt; Utility. &lt;br /&gt;
# That will let you go to Patches &amp;gt; ASM &amp;gt; Special Process Effects (From the dropdown), where you&#039;ll have to (in the second tab) add a new effect ID with the [+], import code to that ID to then in the first tab, add a new special process that you&#039;ll give the effect ID to. &lt;br /&gt;
# In the dropdown menus on the left, go to Lists &amp;gt; Recruitment List. Scroll to the pokemon with the ID 16 (it should be a Manaphy assuming you haven’t changed it.) &lt;br /&gt;
#* Click on the pokemon’s name and change it to whatever species you’d like. In the example below, I changed it from Manaphy to Growlithe.&lt;br /&gt;
#* You may also want to change the default level and the recruitment location. If you change the recruit location to “Beach (0215)”, then if the recruit gets ko’d in a dungeon, it counts as a party wipe.   [[File:T1.png|frameless|300x300px|right]]&lt;br /&gt;
# Add the following script to any cutscene after the tutorial dungeon (ie Beach Cave). For some reason the game will crash if you do so before Beach Cave. I personally put it in the cutscene before the first Koffing-Zubat fight and it worked.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ProcessSpecial(PROCESS_SPECIAL_PREPARE_MENU_ACCEPT_TEAM_MEMBER, 16, 0) ) { }switch ( message_Menu(MENU_ACCEPT_TEAM_MEMBER) )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ProcessSpecial(64,5,0);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;***&amp;lt;/nowiki&amp;gt;Replace the ‘64’ in ProcessSpecial(64,5,0) with whatever the ID of the special process effect is. For me it just happened to be 64. (I think by default it’s 62 but I may be wrong.)&lt;br /&gt;
&lt;br /&gt;
Those three lines will give the player a prompt to either accept or deny the second party member. To force the play to pick yes, paste this script (written by Ajifer) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;§label_5;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   CallCommon(CORO_MESSAGE_CLOSE_WAIT_FUNC);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   switch ( &#039;&#039;&#039;ProcessSpecial(PROCESS_SPECIAL_PREPARE_MENU_ACCEPT_TEAM_MEMBER, 16, 0) ) { }&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   &#039;&#039;&#039;switch ( message_Menu(MENU_ACCEPT_TEAM_MEMBER) )&#039;&#039;&#039; {&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       case 1:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       default:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Player said yes to accepting the partner&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Celebrations for the partner joining.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Script continues here, ending with an end; or you can add a jump @label_6 to continue further down for clarity.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;      &#039;&#039;&#039; ProcessSpecial(64,5,0);&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       jump @label_6;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       case 2:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Player said no to accepting the partner&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Guilt trip the player into reconsider, have the question asked again&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           jump @label_5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   ;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;§label_6;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Congrats! Now this pokemon is the third member of your party in dungeons. &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Having the Second Partner Follow You In the Overworld&#039;&#039;&#039; ==&lt;br /&gt;
In every “enter(sse)” scene of every overworld map, do the following:&lt;br /&gt;
&lt;br /&gt;
# Go to the “sectors” list in the top-right.&lt;br /&gt;
# Find any sectors with 2 actors listed (player + Attendant1).&lt;br /&gt;
# Add actor “ACTOR_ATTENDANT_MANAFI” at the same location as those 2 actors. This will be the second partner’s “spawn point” whenever the player enters that map.&lt;br /&gt;
&lt;br /&gt;
==== Using the crossroads (map P01P01A) as an example. ====&lt;br /&gt;
Step 1: Open the Enter scene and scan for (2 Acts) sectors&lt;br /&gt;
&lt;br /&gt;
[[File:T2.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2: Click the S checkbox to single-out the sector. (You can ignore any sectors that only have Bidoof + Sunflora)&lt;br /&gt;
&lt;br /&gt;
[[File:T3.png|frameless|600x600px]]&lt;br /&gt;
&lt;br /&gt;
Step 3: Add the actor of your second partner. Make sure that &lt;br /&gt;
&lt;br /&gt;
# “kind” is “ATTENDANT_MANAFI” (this will line up with the pokemon ID 16 in your recruitment list, which is Growlithe in my case)&lt;br /&gt;
# The actor’s sector is the same as the player and ATTENDANT1&lt;br /&gt;
# They are facing the same direction as the player and ATTENDANT1 [[File:T5.png|frameless|600x600px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Step 4: Repeat for every (2 acts) sector (except the bidoof+sunflora) on every overworld map. In vanilla this includes:&lt;br /&gt;
&lt;br /&gt;
# Every Guild Floor and Room&lt;br /&gt;
# The Crossroads&lt;br /&gt;
# Spinda’s Cafe&lt;br /&gt;
# Both Town maps + Sharpedo’s Bluff&lt;br /&gt;
# The beach and path to the beach&lt;br /&gt;
# The outside of the guild&lt;br /&gt;
# I’m certain I’m missing some later on in the game. Like anytime you get to encounter a Kangaskhan Rock in the middle of or before a dungeon.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Other Tips:&#039;&#039;&#039; ==&lt;br /&gt;
# If you ever see “ProcessSpecial(PROCESS_SPECIAL_SET_TEAM_SETUP_HERO_AND_PARTNER_ONLY,0,0);” Make sure to delete it/comment it out or else it will reset your party.&lt;br /&gt;
# You can refer to the second partner in dialogue using the “[c_name:UNIT_NPC1]” variable. &lt;br /&gt;
# To have the second partner talk, use “ACTOR_UNIT_NPC1”. For ex.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;message_SetFace(ACTOR_UNIT_NPC1, FACE_NORMAL, FACE_POS_STANDARD);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   message_Talk({&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       english=&amp;quot; No worries little buddy![K] Just be careful ya hear!&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   });&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. You use the actor “UNIT_NPC1” in cutscenes/scene editors to refer to the second partner.&lt;br /&gt;
&lt;br /&gt;
5. When on the Overworld, for non-dialogue script (like turning or moving in an overworld cutscene), you refer to the second partner as “ACTOR_ATTENDANT_MANAFI” instead. For ex. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;MovePositionOffset&amp;lt;actor ACTOR_ATTENDANT_MANAFI&amp;gt;(1, 15, 0);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. The player’s bedroom only has two beds in it. You can add a third by replacing the map background with this one drawn by @Basealeios (please credit appropriately)&lt;br /&gt;
&lt;br /&gt;
https://imgur.com/gallery/3-bed-bedroom-pmd-eos-T4I9Ktb&lt;br /&gt;
&lt;br /&gt;
7. When testing, you may need to re-recruit/add the second partner to the party every time. For ex. If you’re starting your testing in Main 3, but the partner was added in Main 1, then the game will crash when it tries to call UNIT_NPC1 because it hasn’t been defined as of playing Main 3. You can resolve this by copy/pasting the below script at the beginning of Main 3 (or whatever Main you’re starting from)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;§label_5;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   CallCommon(CORO_MESSAGE_CLOSE_WAIT_FUNC);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   switch ( ProcessSpecial(PROCESS_SPECIAL_PREPARE_MENU_ACCEPT_TEAM_MEMBER, 16, 0) ) { }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   switch ( message_Menu(MENU_ACCEPT_TEAM_MEMBER) ) {&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       case 1:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       default:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Player said yes to accepting the partner&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Celebrations for the partner joining.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Script continues here, ending with an end; or you can add a jump @label_6 to continue further down for clarity.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       ProcessSpecial(64,5,0);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       jump @label_6;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       case 2:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Player said no to accepting the partner&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Guilt trip the player into reconsider, have the question asked again&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           jump @label_5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   ;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;§label_6;&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=How_to_add_a_second_partner&amp;diff=1489</id>
		<title>How to add a second partner</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=How_to_add_a_second_partner&amp;diff=1489"/>
		<updated>2026-03-27T19:51:51Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Fix category tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &#039;&#039;&#039;How to Implement a Second Partner in SkyTemple&#039;&#039;&#039; ==&lt;br /&gt;
  &#039;&#039;&#039;Who this guide is for:&#039;&#039;&#039; People who want to have a second partner, for a total party of three pokemon for your ROM Hack. This may work to have a party of four as well but I have not tested it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Considerations:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
# Having a three member party also means having more pokemon talking and being present in cutscenes, thus more scripting and writing on your part.&lt;br /&gt;
# If the Chimeco Assembly is enabled, the player will be able to remove the second partner. You can either let them do this, or delete the Chimeco Assembly. &lt;br /&gt;
&lt;br /&gt;
==== Version with images: ====&lt;br /&gt;
https://docs.google.com/document/d/e/2PACX-1vRi3ZieBTBFC7eg2gFIQhhKGpoAkOsf_NyJ0628-PA5CqqSjRYInbttLouDrPeQRxwSEA4XiUSisbGE/pub&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Adding a Pokemon To Your Starting Party (Credit: @Ajifer on the SkyTemple Discord)&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
# Download this patch by Adex (please credit appropriately): &amp;lt;nowiki&amp;gt;https://github.com/Adex-8x/EoS-ASM-Effects/blob/main/special_processes/monster_entry/add_mentry_to_party.asm&amp;lt;/nowiki&amp;gt;  &lt;br /&gt;
# The above is a custom special process. In order to import custom special processes, you&#039;ll first need to apply the patch &amp;quot;ExtractSPCode&amp;quot; from Patches &amp;gt; ASM (double click) &amp;gt; Utility. &lt;br /&gt;
# That will let you go to Patches &amp;gt; ASM &amp;gt; Special Process Effects (From the dropdown), where you&#039;ll have to (in the second tab) add a new effect ID with the [+], import code to that ID to then in the first tab, add a new special process that you&#039;ll give the effect ID to. &lt;br /&gt;
# In the dropdown menus on the left, go to Lists &amp;gt; Recruitment List. Scroll to the pokemon with the ID 16 (it should be a Manaphy assuming you haven’t changed it.) &lt;br /&gt;
#* Click on the pokemon’s name and change it to whatever species you’d like. In the example below, I changed it from Manaphy to Growlithe.&lt;br /&gt;
#* You may also want to change the default level and the recruitment location. If you change the recruit location to “Beach (0215)”, then if the recruit gets ko’d in a dungeon, it counts as a party wipe.  &amp;lt;br /&amp;gt;5. Add the following script to any cutscene after the tutorial dungeon (ie Beach Cave). For some reason the game will crash if you do so before Beach Cave. I personally put it in the cutscene before the first Koffing-Zubat fight and it worked.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ProcessSpecial(PROCESS_SPECIAL_PREPARE_MENU_ACCEPT_TEAM_MEMBER, 16, 0) ) { }switch ( message_Menu(MENU_ACCEPT_TEAM_MEMBER) )&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ProcessSpecial(64,5,0);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;***&amp;lt;/nowiki&amp;gt;Replace the ‘64’ in ProcessSpecial(64,5,0) with whatever the ID of the special process effect is. For me it just happened to be 64. (I think by default it’s 62 but I may be wrong.)&lt;br /&gt;
&lt;br /&gt;
Those three lines will give the player a prompt to either accept or deny the second party member. To force the play to pick yes, paste this script (written by Ajifer) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;§label_5;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   CallCommon(CORO_MESSAGE_CLOSE_WAIT_FUNC);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   switch ( &#039;&#039;&#039;ProcessSpecial(PROCESS_SPECIAL_PREPARE_MENU_ACCEPT_TEAM_MEMBER, 16, 0) ) { }&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   &#039;&#039;&#039;switch ( message_Menu(MENU_ACCEPT_TEAM_MEMBER) )&#039;&#039;&#039; {&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       case 1:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       default:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Player said yes to accepting the partner&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Celebrations for the partner joining.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Script continues here, ending with an end; or you can add a jump @label_6 to continue further down for clarity.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;      &#039;&#039;&#039; ProcessSpecial(64,5,0);&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       jump @label_6;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       case 2:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Player said no to accepting the partner&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Guilt trip the player into reconsider, have the question asked again&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           jump @label_5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   ;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;§label_6;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Congrats! Now this pokemon is the third member of your party in dungeons. &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Having the Second Partner Follow You In the Overworld&#039;&#039;&#039; ==&lt;br /&gt;
In every “enter(sse)” scene of every overworld map, do the following:&lt;br /&gt;
&lt;br /&gt;
# Go to the “sectors” list in the top-right.&lt;br /&gt;
# Find any sectors with 2 actors listed (player + Attendant1).&lt;br /&gt;
# Add actor “ACTOR_ATTENDANT_MANAFI” at the same location as those 2 actors. This will be the second partner’s “spawn point” whenever the player enters that map.&lt;br /&gt;
&lt;br /&gt;
==== Using the crossroads (map P01P01A) as an example. ====&lt;br /&gt;
Step 1: Open the Enter scene and scan for (2 Acts) sectors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2: Click the S checkbox to single-out the sector. (You can ignore any sectors that only have Bidoof + Sunflora)&lt;br /&gt;
&lt;br /&gt;
Step 3: Add the actor of your second partner. Make sure that &lt;br /&gt;
&lt;br /&gt;
# “kind” is “ATTENDANT_MANAFI” (this will line up with the pokemon ID 16 in your recruitment list, which is Growlithe in my case)&lt;br /&gt;
# The actor’s sector is the same as the player and ATTENDANT1&lt;br /&gt;
# They are facing the same direction as the player and ATTENDANT1&lt;br /&gt;
&lt;br /&gt;
Step 4: Repeat for every (2 acts) sector (except the bidoof+sunflora) on every overworld map. In vanilla this includes:&lt;br /&gt;
&lt;br /&gt;
# Every Guild Floor and Room&lt;br /&gt;
# The Crossroads&lt;br /&gt;
# Spinda’s Cafe&lt;br /&gt;
# Both Town maps + Sharpedo’s Bluff&lt;br /&gt;
# The beach and path to the beach&lt;br /&gt;
# The outside of the guild&lt;br /&gt;
# I’m certain I’m missing some later on in the game. Like anytime you get to encounter a Kangaskhan Rock in the middle of or before a dungeon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other Tips:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
# If you ever see “ProcessSpecial(PROCESS_SPECIAL_SET_TEAM_SETUP_HERO_AND_PARTNER_ONLY,0,0);” Make sure to delete it/comment it out or else it will reset your party.&lt;br /&gt;
# You can refer to the second partner in dialogue using the “[c_name:UNIT_NPC1]” variable. &lt;br /&gt;
# To have the second partner talk, use “ACTOR_UNIT_NPC1”. For ex.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;message_SetFace(ACTOR_UNIT_NPC1, FACE_NORMAL, FACE_POS_STANDARD);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   message_Talk({&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       english=&amp;quot; No worries little buddy![K] Just be careful ya hear!&amp;quot;,&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   });&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. You use the actor “UNIT_NPC1” in cutscenes/scene editors to refer to the second partner.&lt;br /&gt;
&lt;br /&gt;
5. When on the Overworld, for non-dialogue script (like turning or moving in an overworld cutscene), you refer to the second partner as “ACTOR_ATTENDANT_MANAFI” instead. For ex. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;MovePositionOffset&amp;lt;actor ACTOR_ATTENDANT_MANAFI&amp;gt;(1, 15, 0);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. The player’s bedroom only has two beds in it. You can add a third by replacing the map background with this one drawn by @Basealeios (please credit appropriately)&lt;br /&gt;
&lt;br /&gt;
https://imgur.com/gallery/3-bed-bedroom-pmd-eos-T4I9Ktb&lt;br /&gt;
&lt;br /&gt;
7. When testing, you may need to re-recruit/add the second partner to the party every time. For ex. If you’re starting your testing in Main 3, but the partner was added in Main 1, then the game will crash when it tries to call UNIT_NPC1 because it hasn’t been defined as of playing Main 3. You can resolve this by copy/pasting the below script at the beginning of Main 3 (or whatever Main you’re starting from)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;§label_5;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   CallCommon(CORO_MESSAGE_CLOSE_WAIT_FUNC);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   switch ( ProcessSpecial(PROCESS_SPECIAL_PREPARE_MENU_ACCEPT_TEAM_MEMBER, 16, 0) ) { }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   switch ( message_Menu(MENU_ACCEPT_TEAM_MEMBER) ) {&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       case 1:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       default:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Player said yes to accepting the partner&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Celebrations for the partner joining.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Script continues here, ending with an end; or you can add a jump @label_6 to continue further down for clarity.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       ProcessSpecial(64,5,0);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       jump @label_6;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;       case 2:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Player said no to accepting the partner&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           //Guilt trip the player into reconsider, have the question asked again&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;           jump @label_5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;   ;}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;§label_6;&amp;lt;/code&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Extra_Overlay_Areas&amp;diff=1476</id>
		<title>Extra Overlay Areas</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Extra_Overlay_Areas&amp;diff=1476"/>
		<updated>2026-03-19T00:12:41Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add relevant RAM addresses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page keeps track of the areas inside overlay_0036.bin (the extra overlay added by the [[ExtraSpace]] patch) that have been assigned to ASM patches.&lt;br /&gt;
&lt;br /&gt;
If you want to make an ASM patch that needs extra space, you can request an area in the overlay by asking [[User:Frostbyte|Frostbyte]]. Make sure to know how much space you will need beforehand. Also please add a .area directive that includes the start and end address of your area after it’s assigned so you don’t accidentally overflow it (&amp;lt;code&amp;gt;.area endAddress - startAddress&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
You can request the space assigned to your patch to be increased as long as there’s some free space after its section. If there’s not enough space before the next entry begins, you will have to request a new area and add the new extra code there.&lt;br /&gt;
&lt;br /&gt;
An area that has already been assigned can never be unassigned nor reassigned, even if it’s no longer needed by the hack that requested it. This rule is needed since some people might have an old version of a patch that still needs that area.&lt;br /&gt;
&lt;br /&gt;
All areas listed on this table are relative to the start of overlay 36 in RAM (0x23A7080). For quick reference, the common area starts at RAM offset 0x23D7FF0.&lt;br /&gt;
{| class=&amp;quot;wikitable center&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Area (inclusive - exclusive)&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Patch&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|0x0 - 0x4&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Magic number 0xBAADF00D (little-endian)&lt;br /&gt;
|-&lt;br /&gt;
|0x4 - 0x10&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Reserved&lt;br /&gt;
|-&lt;br /&gt;
|0x10 - 0x480&lt;br /&gt;
|CompleteTeamControl&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x500 - 0x62C&lt;br /&gt;
|MoveShortcuts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x700 - 0x744&lt;br /&gt;
|HeroFaintKick&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x780 - 0x814&lt;br /&gt;
|FixMemorySoftlock&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x830 - 0x878&lt;br /&gt;
|DynamicBossesEverywhere&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x8B0 - 0x9B0&lt;br /&gt;
|RevampEggStarters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xA00 - 0xA30&lt;br /&gt;
|PitfallTrapTweak&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xA70 - 0xAEC&lt;br /&gt;
|BoldText&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xB20 - 0xB7C&lt;br /&gt;
|ChangeTextSound&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xBC0 - 0xC10&lt;br /&gt;
|AntiSoftlock&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xC40 - 0xCC0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Static init address array&#039;&#039;&#039;: 32 pointers to functions that will be called when the overlay is loaded. Null pointers are skipped.&lt;br /&gt;
&lt;br /&gt;
Other projects that use this overlay and need to perform some sort of initialization should add a pointer to their init function on the first empty slot in this array.&lt;br /&gt;
|-&lt;br /&gt;
|0xD00 - 0xD80&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Static init ID array&#039;&#039;&#039;: 32 integers used to identify which project is making use of each of the 32 entries in the static init address array. Each project should have an unique ID. 0 if an entry is unused.&lt;br /&gt;
&lt;br /&gt;
Projects must check these IDs to ensure they don’t overwrite an entry from another project. They must also make sure to remove their old entries (for example, if the location of the project’s init function changes) so the game doesn’t jump to outdated / invalid addresses.&lt;br /&gt;
|-&lt;br /&gt;
|0xE00 - 0x1120&lt;br /&gt;
|PushAllies&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x11A0 - 0x12F0&lt;br /&gt;
|BetterEnemyEvolution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1380 - 0x13B8&lt;br /&gt;
|NoWeatherStop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x13F0 - 0x1400&lt;br /&gt;
|UnusedDungeonChance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1420 - 0x17BC&lt;br /&gt;
|FixMemorySoftlock&lt;br /&gt;
|&amp;gt;= v2.0&lt;br /&gt;
|-&lt;br /&gt;
|0x1840 - 0x1888&lt;br /&gt;
|MoreSamplesAndPresets&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18B0 - 0x18E0&lt;br /&gt;
|AddKeyCheck&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18F0 - 0x1958&lt;br /&gt;
|DisplayScriptVariable&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1970 - 0x1A2C&lt;br /&gt;
|ChangePortraitMidText&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1A60 - 0x1B60&lt;br /&gt;
|MoreAudioMemory&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1B70 - 0x1B90&lt;br /&gt;
|TeamStatsPain&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1BA0 - 0x1BF4&lt;br /&gt;
|FixNo$GbaSaves&lt;br /&gt;
|&amp;gt;= v1.0&lt;br /&gt;
|-&lt;br /&gt;
|0x30F70 - 0x38F80&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Common area&#039;&#039;&#039;: Anyone can use this space however they want without having to request an area. Useful if you don’t care about compatibility with other patches that might use this space. For example, this can be used if you need some space for a patch that is only going to be used in a certain ROM hack.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1475</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1475"/>
		<updated>2026-03-17T16:08:00Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Clarify scripting changes to force a default team&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away. If these false positives are stopping you from installing SkyTemple on Windows, check [[Installing newer versions on Windows|the guide for installing newer versions on Windows]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple is open source software. If you have concerns that it is malicious, the full source code is available to read and verify: https://github.com/SkyTemple/skytemple&lt;br /&gt;
&lt;br /&gt;
==== Why does SkyTemple set off false positives? ====&lt;br /&gt;
SkyTemple (and the SkyTemple Randomizer) use [https://pyinstaller.org/en/stable/ PyInstaller]. PyInstaller is coincidentally also used by many viruses, causing antiviruses to flag most programs that use it as viruses, even if they are not. This unfortunately includes SkyTemple, resulting in the false positives.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available [[:Category:Tutorials|on this wiki]] and on our Discord server, and more will be hopefully added in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #roles channel (available under Server Guide). If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
=== I&#039;ve been banned from the server, how can I contact the mods to request an appeal? ===&lt;br /&gt;
You can appeal strikes and bans by visiting https://appeal.gg/skytemple.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 467: Judgment (copies the user&#039;s first type)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace. Also, entries #31 and #84 are both Primal Dialgas with the same stats (The first one is use at the end of the main story, the second one is used at the end of special episode 5). This means you can change the entry used in fixed room #36 (SE5 final boss) to #31 to repurpose entry #84.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditGuestPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
The vanilla quiz is not part of the script engine, it&#039;s hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
However, it&#039;s possible to reimplement the quiz as a script using [[QuizMenuTool Tutorial|QuizMenuTool]], which provides much more flexibility.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to mass edit data? ===&lt;br /&gt;
SkyTemple does not support mass editing data (e.g. changing data for multiple dungeon floors at once, or for multiple pokémon, etc.). However, you can make use of the &amp;quot;Import&amp;quot; and &amp;quot;Export&amp;quot; buttons available on most screens to copy the data from one entry to another.&lt;br /&gt;
&lt;br /&gt;
For example, you could adjust the settings of a single dungeon floor and then export it to all other floors in the dungeon. Keep in mind that vanilla dungeons often have minor variations between floors, and doing this will make all floors exactly the same. If you want to introduce variations after that, you&#039;ll have to manually edit each floor.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the change you want to make is more complex than that, you could try writing custom code using [[ROM editing with Python and skytemple-files|Python and the skytemple-files library]].&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line (including the line itself) to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt; (also included, should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[Frequently Asked Questions#Problems ROM patching|ROM Patching]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando as part of [https://github.com/PsyCommando/ppmdu_2 his ppmdu suite]. It can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no need to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. Under Windows, the easiest way to use it is to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;br /&gt;
&lt;br /&gt;
If your operating system is not Windows, you will have to build the tool from source following the instructions in the repository. Once you do so, you&#039;ll need some other tool to unpack and repack the ROM, since StatsUtil can only work with the ROM data after it&#039;s unpacked.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1388</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1388"/>
		<updated>2025-11-28T18:16:23Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add question explaining how to appeal Discord bans&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away. If these false positives are stopping you from installing SkyTemple on Windows, check [[Installing newer versions on Windows|the guide for installing newer versions on Windows]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple is open source software. If you have concerns that it is malicious, the full source code is available to read and verify: https://github.com/SkyTemple/skytemple&lt;br /&gt;
&lt;br /&gt;
==== Why does SkyTemple set off false positives? ====&lt;br /&gt;
SkyTemple (and the SkyTemple Randomizer) use [https://pyinstaller.org/en/stable/ PyInstaller]. PyInstaller is coincidentally also used by many viruses, causing antiviruses to flag most programs that use it as viruses, even if they are not. This unfortunately includes SkyTemple, resulting in the false positives.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available [[:Category:Tutorials|on this wiki]] and on our Discord server, and more will be hopefully added in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #roles channel (available under Server Guide). If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
=== I&#039;ve been banned from the server, how can I contact the mods to request an appeal? ===&lt;br /&gt;
You can appeal strikes and bans by visiting https://appeal.gg/skytemple.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 467: Judgment (copies the user&#039;s first type)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace. Also, entries #31 and #84 are both Primal Dialgas with the same stats (The first one is use at the end of the main story, the second one is used at the end of special episode 5). This means you can change the entry used in fixed room #36 (SE5 final boss) to #31 to repurpose entry #84.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditGuestPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
The vanilla quiz is not part of the script engine, it&#039;s hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
However, it&#039;s possible to reimplement the quiz as a script using [[QuizMenuTool Tutorial|QuizMenuTool]], which provides much more flexibility.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to mass edit data? ===&lt;br /&gt;
SkyTemple does not support mass editing data (e.g. changing data for multiple dungeon floors at once, or for multiple pokémon, etc.). However, you can make use of the &amp;quot;Import&amp;quot; and &amp;quot;Export&amp;quot; buttons available on most screens to copy the data from one entry to another.&lt;br /&gt;
&lt;br /&gt;
For example, you could adjust the settings of a single dungeon floor and then export it to all other floors in the dungeon. Keep in mind that vanilla dungeons often have minor variations between floors, and doing this will make all floors exactly the same. If you want to introduce variations after that, you&#039;ll have to manually edit each floor.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the change you want to make is more complex than that, you could try writing custom code using [[ROM editing with Python and skytemple-files|Python and the skytemple-files library]].&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[Frequently Asked Questions#Problems ROM patching|ROM Patching]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando as part of [https://github.com/PsyCommando/ppmdu_2 his ppmdu suite]. It can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no need to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. Under Windows, the easiest way to use it is to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;br /&gt;
&lt;br /&gt;
If your operating system is not Windows, you will have to build the tool from source following the instructions in the repository. Once you do so, you&#039;ll need some other tool to unpack and repack the ROM, since StatsUtil can only work with the ROM data after it&#039;s unpacked.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1387</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1387"/>
		<updated>2025-11-28T18:12:20Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Update Discord channel name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away. If these false positives are stopping you from installing SkyTemple on Windows, check [[Installing newer versions on Windows|the guide for installing newer versions on Windows]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple is open source software. If you have concerns that it is malicious, the full source code is available to read and verify: https://github.com/SkyTemple/skytemple&lt;br /&gt;
&lt;br /&gt;
==== Why does SkyTemple set off false positives? ====&lt;br /&gt;
SkyTemple (and the SkyTemple Randomizer) use [https://pyinstaller.org/en/stable/ PyInstaller]. PyInstaller is coincidentally also used by many viruses, causing antiviruses to flag most programs that use it as viruses, even if they are not. This unfortunately includes SkyTemple, resulting in the false positives.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available [[:Category:Tutorials|on this wiki]] and on our Discord server, and more will be hopefully added in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #roles channel (available under Server Guide). If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 467: Judgment (copies the user&#039;s first type)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace. Also, entries #31 and #84 are both Primal Dialgas with the same stats (The first one is use at the end of the main story, the second one is used at the end of special episode 5). This means you can change the entry used in fixed room #36 (SE5 final boss) to #31 to repurpose entry #84.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditGuestPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
The vanilla quiz is not part of the script engine, it&#039;s hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
However, it&#039;s possible to reimplement the quiz as a script using [[QuizMenuTool Tutorial|QuizMenuTool]], which provides much more flexibility.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to mass edit data? ===&lt;br /&gt;
SkyTemple does not support mass editing data (e.g. changing data for multiple dungeon floors at once, or for multiple pokémon, etc.). However, you can make use of the &amp;quot;Import&amp;quot; and &amp;quot;Export&amp;quot; buttons available on most screens to copy the data from one entry to another.&lt;br /&gt;
&lt;br /&gt;
For example, you could adjust the settings of a single dungeon floor and then export it to all other floors in the dungeon. Keep in mind that vanilla dungeons often have minor variations between floors, and doing this will make all floors exactly the same. If you want to introduce variations after that, you&#039;ll have to manually edit each floor.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the change you want to make is more complex than that, you could try writing custom code using [[ROM editing with Python and skytemple-files|Python and the skytemple-files library]].&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[Frequently Asked Questions#Problems ROM patching|ROM Patching]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando as part of [https://github.com/PsyCommando/ppmdu_2 his ppmdu suite]. It can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no need to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. Under Windows, the easiest way to use it is to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;br /&gt;
&lt;br /&gt;
If your operating system is not Windows, you will have to build the tool from source following the instructions in the repository. Once you do so, you&#039;ll need some other tool to unpack and repack the ROM, since StatsUtil can only work with the ROM data after it&#039;s unpacked.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1386</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1386"/>
		<updated>2025-11-28T18:11:28Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Link to tutorials&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away. If these false positives are stopping you from installing SkyTemple on Windows, check [[Installing newer versions on Windows|the guide for installing newer versions on Windows]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple is open source software. If you have concerns that it is malicious, the full source code is available to read and verify: https://github.com/SkyTemple/skytemple&lt;br /&gt;
&lt;br /&gt;
==== Why does SkyTemple set off false positives? ====&lt;br /&gt;
SkyTemple (and the SkyTemple Randomizer) use [https://pyinstaller.org/en/stable/ PyInstaller]. PyInstaller is coincidentally also used by many viruses, causing antiviruses to flag most programs that use it as viruses, even if they are not. This unfortunately includes SkyTemple, resulting in the false positives.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available [[:Category:Tutorials|on this wiki]] and on our Discord server, and more will be hopefully added in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 467: Judgment (copies the user&#039;s first type)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace. Also, entries #31 and #84 are both Primal Dialgas with the same stats (The first one is use at the end of the main story, the second one is used at the end of special episode 5). This means you can change the entry used in fixed room #36 (SE5 final boss) to #31 to repurpose entry #84.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditGuestPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
The vanilla quiz is not part of the script engine, it&#039;s hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
However, it&#039;s possible to reimplement the quiz as a script using [[QuizMenuTool Tutorial|QuizMenuTool]], which provides much more flexibility.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to mass edit data? ===&lt;br /&gt;
SkyTemple does not support mass editing data (e.g. changing data for multiple dungeon floors at once, or for multiple pokémon, etc.). However, you can make use of the &amp;quot;Import&amp;quot; and &amp;quot;Export&amp;quot; buttons available on most screens to copy the data from one entry to another.&lt;br /&gt;
&lt;br /&gt;
For example, you could adjust the settings of a single dungeon floor and then export it to all other floors in the dungeon. Keep in mind that vanilla dungeons often have minor variations between floors, and doing this will make all floors exactly the same. If you want to introduce variations after that, you&#039;ll have to manually edit each floor.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the change you want to make is more complex than that, you could try writing custom code using [[ROM editing with Python and skytemple-files|Python and the skytemple-files library]].&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[Frequently Asked Questions#Problems ROM patching|ROM Patching]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando as part of [https://github.com/PsyCommando/ppmdu_2 his ppmdu suite]. It can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no need to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. Under Windows, the easiest way to use it is to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;br /&gt;
&lt;br /&gt;
If your operating system is not Windows, you will have to build the tool from source following the instructions in the repository. Once you do so, you&#039;ll need some other tool to unpack and repack the ROM, since StatsUtil can only work with the ROM data after it&#039;s unpacked.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1384</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1384"/>
		<updated>2025-11-16T12:00:01Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add info on how to free up an extra fixed room pokémon slot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away. If these false positives are stopping you from installing SkyTemple on Windows, check [[Installing newer versions on Windows|the guide for installing newer versions on Windows]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple is open source software. If you have concerns that it is malicious, the full source code is available to read and verify: https://github.com/SkyTemple/skytemple&lt;br /&gt;
&lt;br /&gt;
==== Why does SkyTemple set off false positives? ====&lt;br /&gt;
SkyTemple (and the SkyTemple Randomizer) use [https://pyinstaller.org/en/stable/ PyInstaller]. PyInstaller is coincidentally also used by many viruses, causing antiviruses to flag most programs that use it as viruses, even if they are not. This unfortunately includes SkyTemple, resulting in the false positives.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 467: Judgment (copies the user&#039;s first type)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace. Also, entries #31 and #84 are both Primal Dialgas with the same stats (The first one is use at the end of the main story, the second one is used at the end of special episode 5). This means you can change the entry used in fixed room #36 (SE5 final boss) to #31 to repurpose entry #84.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditGuestPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
The vanilla quiz is not part of the script engine, it&#039;s hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
However, it&#039;s possible to reimplement the quiz as a script using [[QuizMenuTool Tutorial|QuizMenuTool]], which provides much more flexibility.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to mass edit data? ===&lt;br /&gt;
SkyTemple does not support mass editing data (e.g. changing data for multiple dungeon floors at once, or for multiple pokémon, etc.). However, you can make use of the &amp;quot;Import&amp;quot; and &amp;quot;Export&amp;quot; buttons available on most screens to copy the data from one entry to another.&lt;br /&gt;
&lt;br /&gt;
For example, you could adjust the settings of a single dungeon floor and then export it to all other floors in the dungeon. Keep in mind that vanilla dungeons often have minor variations between floors, and doing this will make all floors exactly the same. If you want to introduce variations after that, you&#039;ll have to manually edit each floor.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the change you want to make is more complex than that, you could try writing custom code using [[ROM editing with Python and skytemple-files|Python and the skytemple-files library]].&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[Frequently Asked Questions#Problems ROM patching|ROM Patching]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando as part of [https://github.com/PsyCommando/ppmdu_2 his ppmdu suite]. It can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no need to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. Under Windows, the easiest way to use it is to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;br /&gt;
&lt;br /&gt;
If your operating system is not Windows, you will have to build the tool from source following the instructions in the repository. Once you do so, you&#039;ll need some other tool to unpack and repack the ROM, since StatsUtil can only work with the ROM data after it&#039;s unpacked.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=How_to_connect_to_custom_Wi-Fi_Connection_Servers&amp;diff=1383</id>
		<title>How to connect to custom Wi-Fi Connection Servers</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=How_to_connect_to_custom_Wi-Fi_Connection_Servers&amp;diff=1383"/>
		<updated>2025-11-11T01:55:06Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add alternative server address&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Online functionality for &#039;&#039;Pokémon Mystery Dungeon: Explorers of Time/Darkness/Sky&#039;&#039; has been unavailable since the Nintendo Wi-Fi Connection servers were shut down in 2014. Thanks to the project [https://github.com/irdkwia/pelipper-test pelipper-test] by Irdkwia, most services can be accessed again on unmodified copies of the game via a Nintendo DS or compatible emulator like MelonDS.&lt;br /&gt;
&lt;br /&gt;
== Public servers ==&lt;br /&gt;
&lt;br /&gt;
You can connect to one of the following publicly available servers:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Public servers&lt;br /&gt;
|-&lt;br /&gt;
! Website !! IP address !! Hosted by&lt;br /&gt;
|-&lt;br /&gt;
| [http://wfc.skytemple.org wfc.skytemple.org] / [http://wc.skytemple.org wc.skytemple.org]|| 91.107.226.151 ||[[User:Techticks|techticks]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to Connect ==&lt;br /&gt;
&lt;br /&gt;
Follow these steps in-game to connect to a custom server.&lt;br /&gt;
&lt;br /&gt;
# On the Top Menu, go to &#039;&#039;Other -&amp;gt; Nintendo WFC -&amp;gt; Nintendo WFC Settings&#039;&#039;. Select &amp;quot;Yes&amp;quot; when prompted.&lt;br /&gt;
# Establish a valid connection if you haven’t already (if you’re using the MelonDS emulator, there should already be one called &amp;quot;melonAP&amp;quot;.)&lt;br /&gt;
# Turn “Auto-obtain DNS” off.&lt;br /&gt;
# Change “Primary DNS” to the IP address of the server you want to connect to.&lt;br /&gt;
# Save settings and test your connection. If it successfully connects, you are on the server!&lt;br /&gt;
&lt;br /&gt;
== Wi-Fi Limitations ==&lt;br /&gt;
Note that the Nintendo DS does not support modern Wi-Fi capabilities. Wi-Fi networks must meet the following specifications: &amp;lt;ref&amp;gt;https://wiki.ds-homebrew.com/ds-index/wifi#settings&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* No encryption (open Wi-Fi) or WEP encryption&lt;br /&gt;
* 2.4 GHz frequency&lt;br /&gt;
* 802.11b wireless mode&lt;br /&gt;
&lt;br /&gt;
Always follow best practises and ensure that your home network is secure. Consider setting up a temporary mobile hotspot to connect your Nintendo DS to instead of re-configuring your home router. As a safe alternative, the melonDS emulator can emulate Wi-Fi Connection over any secure network out of the box.&lt;br /&gt;
&lt;br /&gt;
== Discord integration ==&lt;br /&gt;
North American copies of &#039;&#039;Explorers of Time/Darkness/Sky&#039;&#039; feature an email service that notifies players of their Rescue Mail status. Not only is this service implemented, but the [https://discord.com/invite/skytemple SkyTemple server] features a bot (Pelipper) that will notify users of Rescue Mail updates as well! Integrating your game with Pelipper involves following these steps:&lt;br /&gt;
&lt;br /&gt;
# On the Top Menu, go to &#039;&#039;Other -&amp;gt; Nintendo WFC -&amp;gt; Email Settings -&amp;gt; Set Email Address&#039;&#039;.&lt;br /&gt;
# When the game prompts for an email address, instead input your Discord username with the following format: &amp;lt;code&amp;gt;&amp;amp;discord&amp;amp;username&amp;lt;/code&amp;gt;. For example, if your Discord username is &amp;quot;decoi_representative&amp;quot;, you would input &amp;lt;code&amp;gt;&amp;amp;discord&amp;amp;decoi_representative&amp;lt;/code&amp;gt;.&lt;br /&gt;
#* Alternatively, you can also input your User ID if your username contains characters that cannot be inputted in-game. For example, if your User ID is &amp;quot;1005627006114865162&amp;quot;, then you would input &amp;lt;code&amp;gt;&amp;amp;discord&amp;amp;1005627006114865162&amp;lt;/code&amp;gt;.&lt;br /&gt;
# The game will ask you to re-input the field you inputted in Step 2; do so.&lt;br /&gt;
# Select &amp;quot;Yes&amp;quot; when prompted both times. Connect to Nintendo WFC.&lt;br /&gt;
# If successful, you will receive a DM from the Discord bot named &amp;quot;Pelipper&amp;quot; that informs you of your sign-up code. Press &amp;quot;Next&amp;quot; once you have received the DM.&lt;br /&gt;
# Enter the last four digits of your sign-up code in-game.&lt;br /&gt;
# You will be prompted to enter a four-digit password. This is only ever used in-game and is &#039;&#039;not&#039;&#039; stored online. Enter the four digits of your choosing. This password will be needed whenever you want to change your email settings in-game.&lt;br /&gt;
# Confirm your password. The game will be saved, and from here on out, you will be notified of any updates regarding your Rescue Mail!&lt;br /&gt;
&lt;br /&gt;
Please note that you will only receive pings from the Discord bot if you share at least one server with it.&lt;br /&gt;
&lt;br /&gt;
== E-Mail notifications ==&lt;br /&gt;
If you&#039;re playing on a North American copy, you can alternatively receive e-mail notifications by following these steps:&lt;br /&gt;
&lt;br /&gt;
# On the Top Menu, go to &#039;&#039;Other -&amp;gt; Nintendo WFC -&amp;gt; Email Settings -&amp;gt; Set Email Address&#039;&#039;.&lt;br /&gt;
# Input your e-mail address.&lt;br /&gt;
# The game will ask you to re-input the field you inputted in Step 2; do so.&lt;br /&gt;
# Select &amp;quot;Yes&amp;quot; when prompted both times. Connect to Nintendo WFC.&lt;br /&gt;
# If successful, you will receive an e-mail from &#039;&#039;pelipper@skytemple.org&#039;&#039;.&lt;br /&gt;
# Enter the last four digits of your sign-up code in-game.&lt;br /&gt;
# You will be prompted to enter a four-digit password. This is only ever used in-game and is &#039;&#039;not&#039;&#039; stored online. Enter the four digits of your choosing. This password will be needed whenever you want to change your email settings in-game.&lt;br /&gt;
# Confirm your password. The game will be saved, and from here on out, you will be notified of any updates regarding your Rescue Mail!&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1382</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1382"/>
		<updated>2025-11-10T18:32:50Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add StatsUtil instructions for other operating systems&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away. If these false positives are stopping you from installing SkyTemple on Windows, check [[Installing newer versions on Windows|the guide for installing newer versions on Windows]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple is open source software. If you have concerns that it is malicious, the full source code is available to read and verify: https://github.com/SkyTemple/skytemple&lt;br /&gt;
&lt;br /&gt;
==== Why does SkyTemple set off false positives? ====&lt;br /&gt;
SkyTemple (and the SkyTemple Randomizer) use [https://pyinstaller.org/en/stable/ PyInstaller]. PyInstaller is coincidentally also used by many viruses, causing antiviruses to flag most programs that use it as viruses, even if they are not. This unfortunately includes SkyTemple, resulting in the false positives.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 467: Judgment (copies the user&#039;s first type)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditGuestPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
The vanilla quiz is not part of the script engine, it&#039;s hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
However, it&#039;s possible to reimplement the quiz as a script using [[QuizMenuTool Tutorial|QuizMenuTool]], which provides much more flexibility.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to mass edit data? ===&lt;br /&gt;
SkyTemple does not support mass editing data (e.g. changing data for multiple dungeon floors at once, or for multiple pokémon, etc.). However, you can make use of the &amp;quot;Import&amp;quot; and &amp;quot;Export&amp;quot; buttons available on most screens to copy the data from one entry to another.&lt;br /&gt;
&lt;br /&gt;
For example, you could adjust the settings of a single dungeon floor and then export it to all other floors in the dungeon. Keep in mind that vanilla dungeons often have minor variations between floors, and doing this will make all floors exactly the same. If you want to introduce variations after that, you&#039;ll have to manually edit each floor.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the change you want to make is more complex than that, you could try writing custom code using [[ROM editing with Python and skytemple-files|Python and the skytemple-files library]].&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[Frequently Asked Questions#Problems ROM patching|ROM Patching]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando as part of [https://github.com/PsyCommando/ppmdu_2 his ppmdu suite]. It can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no need to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. Under Windows, the easiest way to use it is to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;br /&gt;
&lt;br /&gt;
If your operating system is not Windows, you will have to build the tool from source following the instructions in the repository. Once you do so, you&#039;ll need some other tool to unpack and repack the ROM, since StatsUtil can only work with the ROM data after it&#039;s unpacked.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=SkyTemple_101&amp;diff=1381</id>
		<title>SkyTemple 101</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=SkyTemple_101&amp;diff=1381"/>
		<updated>2025-11-09T16:01:40Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add tutorials category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains some tips on how to use SkyTemple.&lt;br /&gt;
&lt;br /&gt;
== How to apply ASM patches or SkyPatches ==&lt;br /&gt;
When you open the ROM for the first time, double click on Patches -&amp;gt; ASM. There, you can find quite a few built-in patches. Some enhances the gameplay, some fixes bugs and some allows editing certain parts of the game. The most important patch for ROM hacking is ActorAndLevelLoader. It allows you to add new or editing existing actors and allows you to add or edit existing cutscenes or overworlds. Additionally, some patches require other patches to be applied first, the most often requirement being ExtraSpace.&lt;br /&gt;
&lt;br /&gt;
In Patches-&amp;gt;ASM, at the Others tab, you can apply your own, custom SkyPatches. If you open the location of your ROM, you&#039;ll see a folder with the same name as your ROM, with .skytemple at the end. In there, you can see the folder called &amp;quot;patches&amp;quot;. Put any .skypatch file you need to apply to that ROM, head to Patches-&amp;gt;ASM, then Others and apply the patch. When you open the Others tab, you may see a warning about compatibility. All this warning means is that in the future updates of SkyTemple, you may or may not be able to apply the patch. If you already applied the patch, updating SkyTemple won&#039;t break it.&lt;br /&gt;
&lt;br /&gt;
This warning exists in the older version of SkyTemple. Newer versions disallow any incompatible patches.&lt;br /&gt;
&lt;br /&gt;
== Editing starter pokemon ==&lt;br /&gt;
Going to Lists-&amp;gt;Starters allows you to edit the default Pokemon, default name, as well as the starting level and the list of what Pokemon you can get or select in Personality Quiz. If you only want to use the default starters, follow [https://wiki.skytemple.org/index.php/Frequently_Asked_Questions#Can_I_skip_the_personality_test_in_my_hack_and_just_force_a_certain_starting_team? this tutorial.]&lt;br /&gt;
&lt;br /&gt;
== Creating a scene ==&lt;br /&gt;
After applying ActorAndLevelLoader, you can edit existing or add new cutscenes or overworld in the game in Script Scenes tree. All existing cutscenes (Acting Scenes) and over worlds (Enter Scenes) are located in separate folders with the name, corresponding to the background it uses. All folders are sorted by what letter is in the beginning. To add a new folder, double click on Script Scenes, then in the opened tab, press the plus button at the bottom, name the folder, then scroll the list with scenes to the bottom. There, you can edit what background it uses, as well as what name will be shown to the player in the overworld if this scene is loaded. Then, if you&#039;re using the background from the original, search for applicable Script Scene in the list, remember its Type, then go back to your scene, then edit its Type to what was used by existing scene. If you&#039;re using a custom background, however, just put One Layer or Two Layers based on how many layers your background has.&lt;br /&gt;
&lt;br /&gt;
To add a new Acting or Enter Scene, double click on the folder where you want the scene to be added, then press Add Acting Scene (or Add Enter Scene). Then, just place actors where you want them to be at the beginning of the scene, then place a performer where you want the camera to be in (only for Acting Scenes!)&lt;br /&gt;
&lt;br /&gt;
== Acting scripts: how to write, how to play ==&lt;br /&gt;
After creating your first Acting Scene and placing actors and performer, double click on the script on the right of the screen (SceneName.ssb). It&#039;ll open up an empty file.&lt;br /&gt;
&lt;br /&gt;
Every single scene must have &amp;lt;code&amp;gt;def 0 {//the rest of the code is here}&amp;lt;/code&amp;gt; at the beginning. In the list of important for an Acting script code, there is also:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;main_SetGround(LEVEL_LEVELNAME);&amp;lt;/code&amp;gt; - loads the scene&#039;s background&lt;br /&gt;
* &amp;lt;code&amp;gt;supervision_Acting(0);&amp;lt;/code&amp;gt; - loads all actors, objects and performers.&lt;br /&gt;
* &amp;lt;code&amp;gt;camera_SetMyself&amp;lt;performer 0&amp;gt;();&amp;lt;/code&amp;gt; - sets the camera&#039;s position to wherever performer 0 is located.&lt;br /&gt;
* &amp;lt;code&amp;gt;screen_FadeIn(1, 60);&amp;lt;/code&amp;gt; - starts to brighten up the bottom screen (1 disallows the script from continuing until this code finishes running, 60 is the amount of frames the game will take to fade in (in this case, 1 second)&lt;br /&gt;
&lt;br /&gt;
All codes mentioned here must be run in this exact order! Otherwise, it won&#039;t work as expected.&lt;br /&gt;
&lt;br /&gt;
After that, you can start writing whatever code you want. You can use [[Scripting Cheatsheet|scripting cheatsheet]] and [[list of Opcodes]] for help. In the end, scenes without a transition to the overworld should have &amp;lt;code&amp;gt;screen_FadeOut(1, 60)&amp;lt;/code&amp;gt;. Additionally, all scripts without the exceptions should have some way of ending the script (whether it is by using &amp;lt;code&amp;gt;end;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;JumpCommon&amp;lt;/code&amp;gt;, etc.)&lt;br /&gt;
&lt;br /&gt;
To test whether the code is running or not, open COMMON/unionall.ssb on the left. Then, search for &amp;lt;code&amp;gt;coro EVENT_M01_01_02&amp;lt;/code&amp;gt; and put &amp;lt;code&amp;gt;supervision_ExecuteActingSub(LEVEL_LEVELNAME, &#039;ScriptName&#039;, 0);&amp;lt;/code&amp;gt; after CallCommon. Then, save everything, start the game, press New Game, then, in the Debug menu, press No, go to the next page, then press Main 1.&lt;br /&gt;
&lt;br /&gt;
== Common scripting mistakes ==&lt;br /&gt;
&lt;br /&gt;
* Scene looks like a garbled mess upon fade in&lt;br /&gt;
&lt;br /&gt;
Wrong Script Scene&#039;s Type. The amount of layers specified in Script Scene&#039;s settings must match with the amount of layers used background has.&lt;br /&gt;
&lt;br /&gt;
* The camera appears on the top left&lt;br /&gt;
&lt;br /&gt;
Check if the scene has a performer. If it does, check if the order of codes at the beginning has been followed. If so, check if both scenes and scripts are saved.&lt;br /&gt;
&lt;br /&gt;
* Game freaks out after the last line of code&lt;br /&gt;
&lt;br /&gt;
Script doesn&#039;t contain any opcodes that would end it (&amp;lt;code&amp;gt;end;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;JumpCommon&amp;lt;/code&amp;gt;, etc.)&lt;br /&gt;
&lt;br /&gt;
* SkyTemple throws an error on the line &amp;lt;code&amp;gt;camera_SetMyself&amp;lt;performer 0&amp;gt;();&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Outdated version of SkyTemple. Use this instead:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
with (performer 0) {&lt;br /&gt;
    camera_SetMyself();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;instead.&lt;br /&gt;
&lt;br /&gt;
* Screen shows a garbled mess for a frame before showing a background, without any fade&lt;br /&gt;
&lt;br /&gt;
Put &amp;lt;code&amp;gt;screen_FadeOut(1,0);&amp;lt;/code&amp;gt; right after &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Editing actors ==&lt;br /&gt;
To edit or add new actors, go to Lists-&amp;gt;Actors. There, you can see all characters that exist in the game, and a plus button at the bottom to add new one. Upon pressing it, you need to scroll down all the way until you see an actor with a name NEW. By double clicking, you can change the internal name, the species, as well as what name should this character have. In order to do that, go to Text Strings -&amp;gt; English, and in the opened tab, search for &amp;quot;Dummy&amp;quot;, double click on found entry, then put a name for your new character. Remember the ID of that string! Now, go back to Lists-&amp;gt;Actors, scroll down to the end, then put an ID of the string you edited to Text String for Name.&lt;br /&gt;
&lt;br /&gt;
== Adding new objects ==&lt;br /&gt;
If you want to add the new object, apply ExtractObjectTable first. After that, double click on Objects Sprites, then click on New Object Sprite. After that, save and reload the ROM (it is necessary, otherwise, you&#039;ll get an error on the next step). Then, find the new object sprite, and import your object. If you just want a static object, press Import Image. An image you have must be indexed, have 16 colors (one of which is transparency color) and up to 512x512 resolution. Then, go to Lists-&amp;gt;Objects, press plus button, scroll down, rename the last object exactly the same as object sprite is named, then save and reload the ROM again.&lt;br /&gt;
&lt;br /&gt;
== Adding new Pokemon ==&lt;br /&gt;
Before starting adding a Pokemon, head to a [https://sprites.pmdcollab.org/ sprite repository] and make sure that a Pokemon that you want to add has any sprites and portraits.&lt;br /&gt;
&lt;br /&gt;
To add a new Pokemon without overwriting existing ones, expand the Pokemon list on a sidebar, and scroll down until you see ????????? slots. &#039;&#039;&#039;Do not use reserve slots, Pokemon in these slots cannot be used in dungeons!&#039;&#039;&#039; Then, expand the slot. You&#039;ll see two entries - one is used for a male, one is used for a female pokemon. Double click on the first entry. There, you need to edit pokemon name and category and, if needed, statistics and a moveset. After that, click ≡ button on the top, then click &amp;quot;Open SpriteCollab Browser...&amp;quot; There, you can search for a Pokemon of your choice and import the sprites and portraits. Sprites should be added in the new sprite slot, not overwrite existent one.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Keep in mind: if you want to publish your ROM hack in the hack repository, you must have credits for used sprites and portraits!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you want to add a female version of a Pokemon too, click on Export, scroll the list in point 2b, then select the second entry of the Pokemon slot and press Export. Then, double click on that entry in the sidebar and change the Gender to Female. If a female version of a Pokemon has a different appearance compared to a male(example: Meowstic), open SpriteCollab Browser again and import female sprites and portraits.&lt;br /&gt;
&lt;br /&gt;
== Adding a new Map Background ==&lt;br /&gt;
Double click on Map Background, then click Add Background. All Map Backgrounds are divided by categories, depending on the first letter in the name, so it&#039;s preferred if the name for a new background doesn&#039;t start with S, T, D, G, H, P, V or W.&lt;br /&gt;
&lt;br /&gt;
After adding a new background, find it in the list, then double click on it. Then, click on Map, then Width and Height. Then, in your own file explorer, go to wherever a background you want to add is located, then find the image resolution. If the width or height are not multiple of 24, you must edit the image to fix it. Then, divide the image width and height by 24, and put the result in Width in chunks and Height in chunks respectively. If a background you want to add has two layers, go to Map-&amp;gt;Settings and change the Number of layers to 2.&lt;br /&gt;
&lt;br /&gt;
All images you want to use for a Map Background must follow a set of [[Map Background|restrictions]] for it to be importable. If they aren&#039;t, you can click on Instruments, then Convert image to PMD2 indexed PNG. Leave the amount of palettes unchanged, change the Dithering option to No Dithering, open Advanced settings(exists only in later versions of SkyTemple!) and put 2000 in both fields. Then, select your image(s), press Convert and select where to save the image. Keep in mind that the image quality will drop after a conversion.&lt;br /&gt;
&lt;br /&gt;
Now, go to Map-&amp;gt;Import layers from image, select your image(s) and press Import. If your image imported - you&#039;re good. But sometimes, you may encounter an error about unique tiles.&lt;br /&gt;
&lt;br /&gt;
An image is divided by 8x8 tiles, and one image can only contain 1024 of unique tiles. Unique tile is a tile in the image that you cannot get even if you flip any other tile on X or Y axis. If you&#039;ll get an error stating that you have too much of them, you must either divide the image in 2 layers if you only have one layer, or by simplifying an image as much as you can.&lt;br /&gt;
&lt;br /&gt;
After a successful import, if your map will be used in the overworld, go to Map-&amp;gt;Settings, change the amount of collisions to 1, then go to Collision 1 and put collision everywhere you need.&lt;br /&gt;
&lt;br /&gt;
After that, go to &#039;&#039;&#039;Creating a scene&#039;&#039;&#039; part of this page to use this background.&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1359</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1359"/>
		<updated>2025-10-30T15:54:58Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Fix link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away. If these false positives are stopping you from installing SkyTemple on Windows, check [[Installing newer versions on Windows|the guide for installing newer versions on Windows]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple is open source software. If you have concerns that it is malicious, the full source code is available to read and verify: https://github.com/SkyTemple/skytemple&lt;br /&gt;
&lt;br /&gt;
==== Why does SkyTemple set off false positives? ====&lt;br /&gt;
SkyTemple (and the SkyTemple Randomizer) use [https://pyinstaller.org/en/stable/ PyInstaller]. PyInstaller is coincidentally also used by many viruses, causing antiviruses to flag most programs that use it as viruses, even if they are not. This unfortunately includes SkyTemple, resulting in the false positives.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 467: Judgment (copies the user&#039;s first type)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditGuestPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
The vanilla quiz is not part of the script engine, it&#039;s hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
However, it&#039;s possible to reimplement the quiz as a script using [[QuizMenuTool Tutorial|QuizMenuTool]], which provides much more flexibility.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to mass edit data? ===&lt;br /&gt;
SkyTemple does not support mass editing data (e.g. changing data for multiple dungeon floors at once, or for multiple pokémon, etc.). However, you can make use of the &amp;quot;Import&amp;quot; and &amp;quot;Export&amp;quot; buttons available on most screens to copy the data from one entry to another.&lt;br /&gt;
&lt;br /&gt;
For example, you could adjust the settings of a single dungeon floor and then export it to all other floors in the dungeon. Keep in mind that vanilla dungeons often have minor variations between floors, and doing this will make all floors exactly the same. If you want to introduce variations after that, you&#039;ll have to manually edit each floor.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the change you want to make is more complex than that, you could try writing custom code using [[ROM editing with Python and skytemple-files|Python and the skytemple-files library]].&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[Frequently Asked Questions#Problems ROM patching|ROM Patching]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando that can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no real reason to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. If you want to try it out it’s recommended to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=SkyTemple:Privacy_policy&amp;diff=1336</id>
		<title>SkyTemple:Privacy policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=SkyTemple:Privacy_policy&amp;diff=1336"/>
		<updated>2025-10-17T15:57:01Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Update contact email&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;This privacy notice for SkyTemple Wiki (&#039;we&#039;, &#039;us&#039;, or &#039;our&#039;), describes how and why we might collect, store, use, and/or share (&#039;process&#039;) your information when you use our services (&#039;Services&#039;), such as when you:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Visit our website at wiki.skytemple.org, or any website of ours that links to this privacy notice&lt;br /&gt;
* Engage with us in other related ways, including any sales, marketing, or events&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Questions or concerns? &#039;&#039;&#039;Reading this privacy notice will help you understand your privacy rights and choices. If you do not agree with our policies and practices, please do not use our Services. If you still have any questions or concerns, please contact us at skytemple@capypara.de.&lt;br /&gt;
&lt;br /&gt;
== SUMMARY OF KEY POINTS ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This summary provides key points from our privacy notice, but you can find out more details about any of these topics in the sections below.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What personal information do we process?&#039;&#039;&#039; When you visit, use, or navigate our Services, we may process personal information depending on how you interact with SkyTemple and the Services, the choices you make, and the products and features you use. Learn more about personal information you disclose to us.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do we process any sensitive personal information?&#039;&#039;&#039; We do not process sensitive personal information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Do we receive any information from third parties?&#039;&#039;&#039; We do not receive any information from third parties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do we process your information?&#039;&#039;&#039; We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent. We process your information only when we have a valid legal reason to do so. Learn more about how we process your information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In what situations and with which parties do we share personal information?&#039;&#039;&#039; We may share information in specific situations and with specific third parties. Learn more about when and with whom we share your personal information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do we keep your information safe?&#039;&#039;&#039; We have organisational and technical processes and procedures in place to protect your personal information. However, no electronic transmission over the internet or information storage technology can be guaranteed to be 100% secure, so we cannot promise or guarantee that hackers, cybercriminals, or other unauthorised third parties will not be able to defeat our security and improperly collect, access, steal, or modify your information. Learn more about how we keep your information safe.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What are your rights?&#039;&#039;&#039; Depending on where you are located geographically, the applicable privacy law may mean you have certain rights regarding your personal information. Learn more about your privacy rights.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you exercise your rights?&#039;&#039;&#039; The easiest way to exercise your rights is by submitting a data subject access request, or by contacting us. We will consider and act upon any request in accordance with applicable data protection laws.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to learn more about what SkyTemple does with any information we collect? Review the privacy notice in full.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1. WHAT INFORMATION DO WE COLLECT? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Personal information you disclose to us&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In Short: We collect personal information that you provide to us.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We collect personal information that you voluntarily provide to us when you register on the Services, express an interest in obtaining information about us or our products and Services, when you participate in activities on the Services, or otherwise when you contact us.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Personal Information Provided by You.&#039;&#039;&#039; The personal information that we collect depends on the context of your interactions with us and the Services, the choices you make, and the products and features you use. The personal information we collect may include the following:&lt;br /&gt;
&lt;br /&gt;
* usernames&lt;br /&gt;
&lt;br /&gt;
* passwords&lt;br /&gt;
&lt;br /&gt;
* contact preferences&lt;br /&gt;
&lt;br /&gt;
* email addresses&lt;br /&gt;
&lt;br /&gt;
* names&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sensitive Information.&#039;&#039;&#039; We do not process sensitive information.&lt;br /&gt;
&lt;br /&gt;
All personal information that you provide to us must be true, complete, and accurate, and you must notify us of any changes to such personal information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. HOW DO WE PROCESS YOUR INFORMATION? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In Short: We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;We process your personal information for a variety of reasons, depending on how you interact with our Services, including:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;To facilitate account creation and authentication and otherwise manage user accounts. &#039;&#039;&#039;We may process your information so you can create and log in to your account, as well as keep your account in working order.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;To deliver and facilitate delivery of services to the user. &#039;&#039;&#039;We may process your information to provide you with the requested service.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;To send administrative information to you. &#039;&#039;&#039;We may process your information to send you details about our products and services, changes to our terms and policies, and other similar information.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;To enable user-to-user communications. &#039;&#039;&#039;We may process your information if you choose to use any of our offerings that allow for communication with another user.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;To save or protect an individual&#039;s vital interest.&#039;&#039;&#039; We may process your information when necessary to save or protect an individual’s vital interest, such as to prevent harm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3. WHAT LEGAL BASES DO WE RELY ON TO PROCESS YOUR INFORMATION? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In Short: We only process your personal information when we believe it is necessary and we have a valid legal reason (i.e. legal basis) to do so under applicable law, like with your consent, to comply with laws, to provide you with services to enter into or fulfil our contractual obligations, to protect your rights, or to fulfil our legitimate business interests.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you are located in the EU or UK, this section applies to you.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The General Data Protection Regulation (GDPR) and UK GDPR require us to explain the valid legal bases we rely on in order to process your personal information. As such, we may rely on the following legal bases to process your personal information:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Consent. &#039;&#039;&#039;We may process your information if you have given us permission (i.e. consent) to use your personal information for a specific purpose. You can withdraw your consent at any time. Learn more about withdrawing your consent.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Performance of a Contract.&#039;&#039;&#039; We may process your personal information when we believe it is necessary to fulfil our contractual obligations to you, including providing our Services or at your request prior to entering into a contract with you.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Legal Obligations.&#039;&#039;&#039; We may process your information where we believe it is necessary for compliance with our legal obligations, such as to cooperate with a law enforcement body or regulatory agency, exercise or defend our legal rights, or disclose your information as evidence in litigation in which we are involved.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Vital Interests.&#039;&#039;&#039; We may process your information where we believe it is necessary to protect your vital interests or the vital interests of a third party, such as situations involving potential threats to the safety of any person.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you are located in Canada, this section applies to you.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may process your information if you have given us specific permission (i.e. express consent) to use your personal information for a specific purpose, or in situations where your permission can be inferred (i.e. implied consent). You can withdraw your consent at any time.&lt;br /&gt;
&lt;br /&gt;
In some exceptional cases, we may be legally permitted under applicable law to process your information without your consent, including, for example:&lt;br /&gt;
&lt;br /&gt;
* If collection is clearly in the interests of an individual and consent cannot be obtained in a timely way&lt;br /&gt;
&lt;br /&gt;
* For investigations and fraud detection and prevention&lt;br /&gt;
&lt;br /&gt;
* For business transactions provided certain conditions are met&lt;br /&gt;
&lt;br /&gt;
* If it is contained in a witness statement and the collection is necessary to assess, process, or settle an insurance claim&lt;br /&gt;
&lt;br /&gt;
* For identifying injured, ill, or deceased persons and communicating with next of kin&lt;br /&gt;
&lt;br /&gt;
* If we have reasonable grounds to believe an individual has been, is, or may be victim of financial abuse&lt;br /&gt;
&lt;br /&gt;
* If it is reasonable to expect collection and use with consent would compromise the availability or the accuracy of the information and the collection is reasonable for purposes related to investigating a breach of an agreement or a contravention of the laws of Canada or a province&lt;br /&gt;
&lt;br /&gt;
* If disclosure is required to comply with a subpoena, warrant, court order, or rules of the court relating to the production of records&lt;br /&gt;
&lt;br /&gt;
* If it was produced by an individual in the course of their employment, business, or profession and the collection is consistent with the purposes for which the information was produced&lt;br /&gt;
&lt;br /&gt;
* If the collection is solely for journalistic, artistic, or literary purposes&lt;br /&gt;
&lt;br /&gt;
* If the information is publicly available and is specified by the regulations&lt;br /&gt;
&lt;br /&gt;
== 4. WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In Short: We may share information in specific situations described in this section and/or with the following third parties.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may need to share your personal information in the following situations:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Other Users.&#039;&#039;&#039; When you share personal information (for example, by posting comments, contributions, or other content to the Services) or otherwise interact with public areas of the Services, such personal information may be viewed by all users and may be publicly made available outside the Services in perpetuity. Similarly, other users will be able to view descriptions of your activity, communicate with you within our Services, and view your profile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. DO WE USE COOKIES AND OTHER TRACKING TECHNOLOGIES? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In Short: We may use cookies to collect and store your information.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may use cookies to access or store information. These cookies are used to authenticate you and are required for providing the service to you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 6. HOW LONG DO WE KEEP YOUR INFORMATION? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In Short: We keep your information for as long as necessary to fulfill the purposes outlined in this privacy notice unless otherwise required by law.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy notice, unless a longer retention period is required or permitted by law (such as tax, accounting, or other legal requirements). No purpose in this notice will require us keeping your personal information for longer than three (3) months past the termination of the user&#039;s account.&lt;br /&gt;
&lt;br /&gt;
When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymise such information, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.&lt;br /&gt;
&lt;br /&gt;
== 7. HOW DO WE KEEP YOUR INFORMATION SAFE? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In Short: We aim to protect your personal information through a system of organisational and technical security measures.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We have implemented appropriate and reasonable technical and organisational security measures designed to protect the security of any personal information we process. However, despite our safeguards and efforts to secure your information, no electronic transmission over the Internet or information storage technology can be guaranteed to be 100% secure, so we cannot promise or guarantee that hackers, cybercriminals, or other unauthorised third parties will not be able to defeat our security and improperly collect, access, steal, or modify your information. Although we will do our best to protect your personal information, transmission of personal information to and from our Services is at your own risk. You should only access the Services within a secure environment.&lt;br /&gt;
&lt;br /&gt;
== 8. DO WE COLLECT INFORMATION FROM MINORS? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In Short: We do not knowingly collect data from or market to children under 18 years of age.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We do not knowingly solicit data from or market to children under 18 years of age. By using the Services, you represent that you are at least 18 or that you are the parent or guardian of such a minor and consent to such minor dependent’s use of the Services. If we learn that personal information from users less than 18 years of age has been collected, we will deactivate the account and take reasonable measures to promptly delete such data from our records. If you become aware of any data we may have collected from children under age 18, please contact us at hello@capypara.de.&lt;br /&gt;
&lt;br /&gt;
== 9. WHAT ARE YOUR PRIVACY RIGHTS? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In Short: In some regions, such as the European Economic Area (EEA), United Kingdom (UK), and Canada, you have rights that allow you greater access to and control over your personal information. You may review, change, or terminate your account at any time.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In some regions (like the EEA, UK, and Canada), you have certain rights under applicable data protection laws. These may include the right (i) to request access and obtain a copy of your personal information, (ii) to request rectification or erasure; (iii) to restrict the processing of your personal information; and (iv) if applicable, to data portability. In certain circumstances, you may also have the right to object to the processing of your personal information. You can make such a request by contacting us by using the contact details provided in the section &#039;HOW CAN YOU CONTACT US ABOUT THIS NOTICE?&#039; below.&lt;br /&gt;
&lt;br /&gt;
We will consider and act upon any request in accordance with applicable data protection laws.&lt;br /&gt;
&lt;br /&gt;
If you are located in the EEA or UK and you believe we are unlawfully processing your personal information, you also have the right to complain to your [https://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm Member State data protection authority] or [https://ico.org.uk/make-a-complaint/data-protection-complaints/data-protection-complaints/ UK data protection authority].&lt;br /&gt;
&lt;br /&gt;
If you are located in Switzerland, you may contact the [https://www.edoeb.admin.ch/edoeb/en/home.html Federal Data Protection and Information Commissioner].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Withdrawing your consent:&#039;&#039;&#039; If we are relying on your consent to process your personal information, which may be express and/or implied consent depending on the applicable law, you have the right to withdraw your consent at any time. You can withdraw your consent at any time by contacting us by using the contact details provided in the section &#039;HOW CAN YOU CONTACT US ABOUT THIS NOTICE?&#039; below.&lt;br /&gt;
&lt;br /&gt;
However, please note that this will not affect the lawfulness of the processing before its withdrawal nor, when applicable law allows, will it affect the processing of your personal information conducted in reliance on lawful processing grounds other than consent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Account Information&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you would at any time like to review or change the information in your account or terminate your account, you can:&lt;br /&gt;
&lt;br /&gt;
* Contact us using the contact information provided.&lt;br /&gt;
&lt;br /&gt;
Upon your request to terminate your account, we will deactivate or delete your account and information from our active databases. However, we may retain some information in our files to prevent fraud, troubleshoot problems, assist with any investigations, enforce our legal terms and/or comply with applicable legal requirements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cookies and similar technologies:&#039;&#039;&#039; Most Web browsers are set to accept cookies by default. If you prefer, you can usually choose to set your browser to remove cookies and to reject cookies. If you choose to remove cookies or reject cookies, this could affect certain features or services of our Services. You may also opt out of interest-based advertising by advertisers on our Services. &lt;br /&gt;
&lt;br /&gt;
If you have questions or comments about your privacy rights, you may email us at [mailto:contact@skytemple.org contact@skytemple.org].&lt;br /&gt;
&lt;br /&gt;
== 10. CONTROLS FOR DO-NOT-TRACK FEATURES ==&lt;br /&gt;
&lt;br /&gt;
Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track (&#039;DNT&#039;) feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. At this stage no uniform technology standard for recognising and implementing DNT signals has been finalised. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy notice.&lt;br /&gt;
&lt;br /&gt;
== 11. DO WE MAKE UPDATES TO THIS NOTICE? ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;In Short: Yes, we will update this notice as necessary to stay compliant with relevant laws.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We may update this privacy notice from time to time. The updated version will be indicated by an updated &#039;Revised&#039; date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy notice frequently to be informed of how we are protecting your information.&lt;br /&gt;
&lt;br /&gt;
== 12. HOW CAN YOU CONTACT US ABOUT THIS NOTICE? ==&lt;br /&gt;
&lt;br /&gt;
If you have questions or comments about this notice, you may email us at hello@capypara.de.&lt;br /&gt;
&lt;br /&gt;
== 13. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU? ==&lt;br /&gt;
&lt;br /&gt;
You have the right to request access to the personal information we collect from you, change that information, or delete it. To request to review, update, or delete your personal information, please contact us at the email address given above.&lt;br /&gt;
&lt;br /&gt;
This privacy policy was created using Termly&#039;s [https://termly.io/products/privacy-policy-generator/ Privacy Policy Generator].&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1273</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1273"/>
		<updated>2025-09-30T16:57:53Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Reorder new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away. If these false positives are stopping you from installing SkyTemple on Windows, check [[Installing newer versions on Windows|the guide for installing newer versions on Windows]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple is open source software. If you have concerns that it is malicious, the full source code is available to read and verify: https://github.com/SkyTemple/skytemple&lt;br /&gt;
&lt;br /&gt;
==== Why does SkyTemple set off false positives? ====&lt;br /&gt;
SkyTemple (and the SkyTemple Randomizer) use [https://pyinstaller.org/en/stable/ PyInstaller]. PyInstaller is coincidentally also used by many viruses, causing antiviruses to flag most programs that use it as viruses, even if they are not. This unfortunately includes SkyTemple, resulting in the false positives.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 467: Judgment (copies the user&#039;s first type)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditGuestPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
The vanilla quiz is not part of the script engine, it&#039;s hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
However, it&#039;s possible to reimplement the quiz as a script using [[QuizMenuTool Tutorial|QuizMenuTool]], which provides much more flexibility.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to mass edit data? ===&lt;br /&gt;
SkyTemple does not support mass editing data (e.g. changing data for multiple dungeon floors at once, or for multiple pokémon, etc.). However, you can make use of the &amp;quot;Import&amp;quot; and &amp;quot;Export&amp;quot; buttons available on most screens to copy the data from one entry to another.&lt;br /&gt;
&lt;br /&gt;
For example, you could adjust the settings of a single dungeon floor and then export it to all other floors in the dungeon. Keep in mind that vanilla dungeons often have minor variations between floors, and doing this will make all floors exactly the same. If you want to introduce variations after that, you&#039;ll have to manually edit each floor.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the change you want to make is more complex than that, you could try writing custom code using [[ROM editing with Python and skytemple-files|Python and the skytemple-files library]].&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[FAQ#Problems ROM patching|ROM Patching]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando that can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no real reason to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. If you want to try it out it’s recommended to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1272</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1272"/>
		<updated>2025-09-30T16:56:54Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add mass edit question&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away. If these false positives are stopping you from installing SkyTemple on Windows, check [[Installing newer versions on Windows|the guide for installing newer versions on Windows]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple is open source software. If you have concerns that it is malicious, the full source code is available to read and verify: https://github.com/SkyTemple/skytemple&lt;br /&gt;
&lt;br /&gt;
==== Why does SkyTemple set off false positives? ====&lt;br /&gt;
SkyTemple (and the SkyTemple Randomizer) use [https://pyinstaller.org/en/stable/ PyInstaller]. PyInstaller is coincidentally also used by many viruses, causing antiviruses to flag most programs that use it as viruses, even if they are not. This unfortunately includes SkyTemple, resulting in the false positives.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 467: Judgment (copies the user&#039;s first type)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditGuestPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
The vanilla quiz is not part of the script engine, it&#039;s hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
However, it&#039;s possible to reimplement the quiz as a script using [[QuizMenuTool Tutorial|QuizMenuTool]], which provides much more flexibility.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to mass edit data? ===&lt;br /&gt;
SkyTemple does not support mass editing data (e.g. changing data for multiple dungeon floors at once, or for multiple pokémon, etc.). However, you can make use of the &amp;quot;Import&amp;quot; and &amp;quot;Export&amp;quot; buttons available on most screens to copy the data from one entry to another.&lt;br /&gt;
&lt;br /&gt;
For example, you could adjust the settings of a single dungeon floor and then export it to all other floors in the dungeon. Keep in mind that vanilla dungeons often have minor variations between floors, and doing this will make all floors exactly the same. If you want to introduce variations after that, you&#039;ll have to manually edit each floor.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if the change you want to make is more complex than that, you could try writing custom code using [[ROM editing with Python and skytemple-files|Python and the skytemple-files library]].&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[FAQ#Problems ROM patching|ROM Patching]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando that can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no real reason to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. If you want to try it out it’s recommended to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=ROM_editing_with_Python_and_skytemple-files&amp;diff=1271</id>
		<title>ROM editing with Python and skytemple-files</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=ROM_editing_with_Python_and_skytemple-files&amp;diff=1271"/>
		<updated>2025-09-30T16:51:45Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add skytemple-files tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
[[SkyTemple]] is internally powered by skytemple-files, a Python library. This library can be installed independently and used to modify the assets of Explorers of Sky by writing Python code. This can be helpful to make changes that are not directly supported by SkyTemple, such as mass editing data.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
To install skytemple-files on any OS using Python 3.11 - 3.13 just run:&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
pip install skytemple-files&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Note: This only works if binary third party libraries used by skytemple-files are also published on pypi for the platform and python version you use. Otherwise pip will try to build them from source, which means you will have to build the dependencies, like Rust.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
The following script shows an example of how skytemple-files can be used to make a single change to dungeon floor data.&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
from ndspy.rom import NintendoDSRom&lt;br /&gt;
from range_typed_integers import u8&lt;br /&gt;
&lt;br /&gt;
from skytemple_files.common.impl_cfg import (&lt;br /&gt;
    change_implementation_type,&lt;br /&gt;
    ImplementationType,&lt;br /&gt;
)&lt;br /&gt;
from skytemple_files.common.types.file_types import FileType&lt;br /&gt;
from skytemple_files.common.util import get_ppmdu_config_for_rom&lt;br /&gt;
&lt;br /&gt;
# 1. First you probably always want to enable native file handlers to fast Rust-based implementations&lt;br /&gt;
#    for all file types, wherever possible.&lt;br /&gt;
change_implementation_type(ImplementationType.NATIVE)&lt;br /&gt;
&lt;br /&gt;
# 2. Second you need to ROM&lt;br /&gt;
rom = NintendoDSRom.fromFile(&amp;quot;/tmp/rom.nds&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# 3. You then almost always need the ppmdu static data for the ROM &lt;br /&gt;
#    (the XML files in SkyTemple Files _resources/ppmdu_config)&lt;br /&gt;
static_data = get_ppmdu_config_for_rom(rom)&lt;br /&gt;
# 4. You then get the file you want as bytes from the ROM&lt;br /&gt;
file_raw = rom.getFileByName(&amp;quot;BALANCE/mappa_s.bin&amp;quot;)&lt;br /&gt;
# 5. Next you use FileType.&amp;lt;YOUR FILE TYPE&amp;gt; to get the file type handler and use deserialize to unpack&lt;br /&gt;
#    the bytes into a model representing the file. See `FileType` for a list of available file types.&lt;br /&gt;
#    Some file handlers need the PPMDU static data as parameter.&lt;br /&gt;
mappa = FileType.MAPPA_BIN.deserialize(file_raw)&lt;br /&gt;
# 6. You can then interact with the model. Here we change the tileset of the first floor in the dungeon floor list.&lt;br /&gt;
mappa.floor_lists[0][0].layout.tileset_id = u8(123)&lt;br /&gt;
# 7. You can then turn the model back into bytes with the handler:&lt;br /&gt;
mappa_bytes_after = FileType.MAPPA_BIN.serialize(mappa)&lt;br /&gt;
# 8. And then write that back to the ROM:&lt;br /&gt;
rom.setFileByName(&amp;quot;BALANCE/mappa_s.bin&amp;quot;, mappa_bytes_after)&lt;br /&gt;
# 9. Which you can then write to a file again:&lt;br /&gt;
rom.saveToFile(&amp;quot;/tmp/rom_out.nds&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Performance_Progress_Flags&amp;diff=1259</id>
		<title>Performance Progress Flags</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Performance_Progress_Flags&amp;diff=1259"/>
		<updated>2025-09-09T10:35:05Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add Gracidea check&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These flags are contained in the PERFORMANCE_PROGRESS_LIST [[List of Script Variables|variable]]. They are used to keep track of certain achievements and unlocks as the story progresses. Each flag is represented with a single bit, and therefore can only be true or false.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID&lt;br /&gt;
!Internal name&lt;br /&gt;
!Description&lt;br /&gt;
!Other comments&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Team name&lt;br /&gt;
|Controls if your team name is shown or just ???? in the menu&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Treasure Bag&lt;br /&gt;
|Bag is bigger than the &amp;quot;One-Item-Inventory&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Random Mission&lt;br /&gt;
|Must be enabled for random missions to generate&lt;br /&gt;
|Might have to do with being able to receive Wonder Mail S&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Friend Rescue&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Friends&lt;br /&gt;
|Pokémon show up in &amp;quot;Potential Recruits&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Evolution&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Formation Change&lt;br /&gt;
|Whether leader can be switched in dungeons. If 0, you get kicked out of the dungeon when your partner faints.&lt;br /&gt;
Also allows adding and removing the starters from the active team on Chimeco Assembly.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Move Alone / Training&lt;br /&gt;
|&lt;br /&gt;
|The list of internal names has an extra element that does not correspond to a flag somewhere around here. So the name for this flag could be either of those.&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Post ending&lt;br /&gt;
|Allows Pokémon that can&#039;t appear in missions during the story to appear in missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|Scenario Completion&lt;br /&gt;
|Player and partner can evolve&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|Dojo clear&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|Defeat Drowzee&lt;br /&gt;
|Clear mark: Drowzee apprehended&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|Defeat fake Groudon&lt;br /&gt;
|Clear mark: Mirage Groudon defeated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|Defeat Luxray&lt;br /&gt;
|Clear mark: Manectric&#039;s clan defeated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|Cleared Future World&lt;br /&gt;
|Clear mark: Escaped from the future&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|Defeat Dusknoir&lt;br /&gt;
|Clear mark: Dusknoir defeated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|Defeat Dialga&lt;br /&gt;
|Clear mark: Temporal Tower saved&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|Defeat Darkrai&lt;br /&gt;
|Clear mark: Darkrai banished&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|Defeat Regigigas&lt;br /&gt;
|Clear mark: Regigigas defeated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|Guild Graduation&lt;br /&gt;
|Clear mark: Graduated from Wigglytuff&#039;s Guild&lt;br /&gt;
|Enables the Make Leader option in Chimeco assembly&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|Collect 7 Treasures&lt;br /&gt;
|Clear mark: Seven Treasures all obtained&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|Scizor ev. clear&lt;br /&gt;
|Clear mark: Met Scizor. Also grants Secret Rank.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|Get Manaphy&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|Manaphy ev. clear&lt;br /&gt;
|Clear mark: Manaphy arc completed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|Go separately from Chatot&lt;br /&gt;
|Makes the Chatot guest slot for Brine Cave not appear even if the dungeon isn&#039;t cleared&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|Climbed Sky Peak&lt;br /&gt;
|Clear mark: Climbed Sky Peak. Also unlocks Sky Jukebox.&lt;br /&gt;
|Allows using a Gracidea to change Shaymin to Sky forme.&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|Identify Waterfall&lt;br /&gt;
|Changes &amp;quot;Secret Waterfall&amp;quot; to &amp;quot;Waterfall Cave&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|Identify Quicksand&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|29&lt;br /&gt;
|&lt;br /&gt;
|The list of recruitable Pokémon is available from the menu&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|30&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|31&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Last flag that gets set when starting a new game with the &amp;quot;All complete&amp;quot; option. The rest might be unused.&lt;br /&gt;
Seems to be related to the Croagunk Swap Shop?&lt;br /&gt;
|-&lt;br /&gt;
|32&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|33&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|34&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|35&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|36&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|37&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|38&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|39&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|40&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|41&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|42&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|43&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|44&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|45&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|46&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|47&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|48&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|49&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|51&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|52&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|53&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|54&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|55&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|56&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|57&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|58&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|59&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|60&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|61&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|62&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|63&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
{{NavScriptTerms}}&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1221</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1221"/>
		<updated>2025-08-23T10:58:53Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add Judgment to list of moves with hardcoded behavior&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away. If these false positives are stopping you from installing SkyTemple on Windows, check [[Installing newer versions on Windows|the guide for installing newer versions on Windows]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple is open source software. If you have concerns that it is malicious, the full source code is available to read and verify: https://github.com/SkyTemple/skytemple&lt;br /&gt;
&lt;br /&gt;
==== Why does SkyTemple set off false positives? ====&lt;br /&gt;
SkyTemple (and the SkyTemple Randomizer) use [https://pyinstaller.org/en/stable/ PyInstaller]. PyInstaller is coincidentally also used by many viruses, causing antiviruses to flag most programs that use it as viruses, even if they are not. This unfortunately includes SkyTemple, resulting in the false positives.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 467: Judgment (copies the user&#039;s first type)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditGuestPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
The vanilla quiz is not part of the script engine, it&#039;s hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
However, it&#039;s possible to reimplement the quiz as a script using [[QuizMenuTool Tutorial|QuizMenuTool]], which provides much more flexibility.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[FAQ#Problems ROM patching|ROM Patching]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando that can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no real reason to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. If you want to try it out it’s recommended to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1204</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=1204"/>
		<updated>2025-08-10T10:20:34Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Link to QMT tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away. If these false positives are stopping you from installing SkyTemple on Windows, check [[Installing newer versions on Windows|the guide for installing newer versions on Windows]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple is open source software. If you have concerns that it is malicious, the full source code is available to read and verify: https://github.com/SkyTemple/skytemple&lt;br /&gt;
&lt;br /&gt;
==== Why does SkyTemple set off false positives? ====&lt;br /&gt;
SkyTemple (and the SkyTemple Randomizer) use [https://pyinstaller.org/en/stable/ PyInstaller]. PyInstaller is coincidentally also used by many viruses, causing antiviruses to flag most programs that use it as viruses, even if they are not. This unfortunately includes SkyTemple, resulting in the false positives.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditGuestPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
The vanilla quiz is not part of the script engine, it&#039;s hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
However, it&#039;s possible to reimplement the quiz as a script using [[QuizMenuTool Tutorial|QuizMenuTool]], which provides much more flexibility.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[FAQ#Problems ROM patching|ROM Patching]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando that can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no real reason to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. If you want to try it out it’s recommended to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=QuizMenuTool_Tutorial&amp;diff=1203</id>
		<title>QuizMenuTool Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=QuizMenuTool_Tutorial&amp;diff=1203"/>
		<updated>2025-08-10T10:13:42Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;{{SkyTempleIcon|icon=skytemple-dialog-error-symbolic}} This article is unfinished. You can help &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:{{PAGENAME}}|veaction=edit}} expanding it]&amp;lt;/span&amp;gt;.&#039;&#039;&amp;lt;hr&amp;gt;This guide explains how to use QuizMenuTool to create a custom Personality Quiz. The bulk of this guide will explain the use of the google sheets portion of the tool. A rudimentary understanding of SkyTemple scripting is helpful for this task, but not strictly required. These topics will be covered at the end for the sake of completion, but only to the extent that they are needed for QuizMenuTool. &lt;br /&gt;
&lt;br /&gt;
== About QuizMenuTool ==&lt;br /&gt;
&lt;br /&gt;
=== What Is QuizMenuTool? ===&lt;br /&gt;
QuizMenuTool is a customizable ExplorerScript replica of the Explorers of Sky Personality Quiz and Starter Selection, with minimal hardcoded aspects. The original quiz was designed to consist mostly of &amp;lt;code&amp;gt;message_Menu()&amp;lt;/code&amp;gt; ASM, to make editing the personality quiz accessible without the need to learn ASM. &lt;br /&gt;
&lt;br /&gt;
=== What can QuizMenuTool do? ===&lt;br /&gt;
QuizMenuTool can modify the process of using the quiz to select a starter, expand/reduce the starter list, add/remove/modify questions from the quiz, and much more! In fact, the better question might be...&lt;br /&gt;
&lt;br /&gt;
=== What Limitations does QuizMenuTool have? ===&lt;br /&gt;
There are a few critical things QuizMenuTool was not designed to do, though many of these could be remedied in the future if enough demand exists. Here&#039;s a list of what QuizMenuTool fails to replicate from the vanilla quiz:&lt;br /&gt;
&lt;br /&gt;
* Hero/Partner Type Exclusion: In the vanilla quiz, the hero and partner are prevented from sharing a type, to encourage team balance. No   option for such a restriction has been implemented yet, though such a thing would be possible in the future, or be scripted manually for a specific hack. &lt;br /&gt;
* SwitchMenu Portraits: In the vanilla quiz, scrolling to a partner choice displays a portrait of that partner, which gradually changes in expression. This feature would require significant custom code to emulate, and is unlikely to be available for QuizMenuTool.&lt;br /&gt;
* Third Party Starter Tweaks: The original starter list is &#039;&#039;&#039;completely unused&#039;&#039;&#039; by QuizMenuTool. Changing it has no impact on the quiz. Players of a hack using QuizMenuTool will have difficulty adding their own starters to the game, though this could potentially be remedied with a special process checking the starter list against what it is expected to be, and assigning the desired starter if a mismatch is found?&lt;br /&gt;
* Incompatibility with Japanese ROMs: Currently, QuizMenuTool is designed to only work for NA and EU ROMs. while in theory a Japanese Quiz could be designed, the Special Processes are not Japanese-compatible. This could be remedied with little effort, but the tool is designed for EU/NA ROMs.&lt;br /&gt;
&lt;br /&gt;
== Who QuizMenuTool is for ==&lt;br /&gt;
If either of the below points do not apply to you, you do not need QuizMenuTool.&lt;br /&gt;
* You would like to expand (or shrink) the list of starter options in the game.&lt;br /&gt;
* You would like to keep the personality quiz in the game, or edit the quiz directly.&lt;br /&gt;
If you only want to change the size of the starter list, and do not want the personality quiz (as if the [[SkipQuiz]] patch is applied), you should instead use [https://github.com/Chesyon/StarterMenuTool StarterMenuTool], which is less powerful but requires much less work to set up.&lt;br /&gt;
&lt;br /&gt;
== Programs and Files ==&lt;br /&gt;
&lt;br /&gt;
=== Required Programs and Files ===&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1snwIq3-GHntcPTBwH-TJ5Ctk0a8l4pwXTZYwCs53dwo/edit?usp=sharing Explorers of Sky Personality Quiz Assembling Sheet]&lt;br /&gt;
* [https://github.com/HappyLappy1/EOS-QuizGenerationTool-ASM Necessary Special Processes and SkyPatches]&lt;br /&gt;
* [[SkyTemple]] &lt;br /&gt;
&lt;br /&gt;
== General Spreadsheet Tips ==&lt;br /&gt;
&lt;br /&gt;
=== Making a Copy of the Sheet ===&lt;br /&gt;
The above link does NOT grant edit access. In order to use the sheet, a copy will need to be made as follows:&lt;br /&gt;
[[File:Copying a Spreadsheet.png|thumb|750x750px|Location of the &amp;quot;File&amp;quot; and &amp;quot;Make a Copy&amp;quot; buttons. |center]]&lt;br /&gt;
First click the &amp;quot;File&amp;quot; button on the top left. Next, &amp;quot;Make a Copy&amp;quot; of the sheet. Finally, name the copy as desired. &lt;br /&gt;
&lt;br /&gt;
=== Cell Color-Coding ===&lt;br /&gt;
Throughout the spreadsheet, most cells are color-coded. Here&#039;s a brief explanation of each color present in the sheet: &lt;br /&gt;
&lt;br /&gt;
* Green Cells are for user input. If a cell is green, it is intended to contain input data.&lt;br /&gt;
* Grey Cells contain formulas. They will update automatically, and should not be edited.&lt;br /&gt;
* Orange Cells are for user outputs. If a cell is orange, it is intended to be exported elsewhere, such as to a SkyTemple script.&lt;br /&gt;
* Cells without a color or of an unspecified color are typically safe to edit. Always check for a formula first though!&lt;br /&gt;
&lt;br /&gt;
=== Paste Values Only ===&lt;br /&gt;
This tab is the first which will require the use of &amp;quot;Paste Values&amp;quot;. When this guide specifies that a copy/paste must &amp;quot;Paste Values&amp;quot;, this means that the copied text is a formula, and the pasted text should not be a formula. &lt;br /&gt;
[[File:How To Paste Values.png|alt=Depiction of the &amp;quot;Values Only&amp;quot; button in the menu|center|thumb|600x600px|Depiction of the &amp;quot;Values Only&amp;quot; button in the menu]]&lt;br /&gt;
There are two ways to paste values, either by right-clicking the paste location and selecting &amp;quot;Paste Special&amp;quot; then &amp;quot;Values Only&amp;quot;, or by holding shift as you paste. &lt;br /&gt;
&lt;br /&gt;
== Quiz Preamble Generator: A Good First Impression! ==&lt;br /&gt;
The Quiz Preamble Generator Tab as a whole exists to create the very beginning of the quiz. &lt;br /&gt;
&lt;br /&gt;
=== Upper Panel ===&lt;br /&gt;
Most tabs in the sheet contain an upper panel of some kind, with various simple inputs and feedback on them:&lt;br /&gt;
[[File:Preamble Upper Panel.png|alt=Location of the Quiz Preamble Generator&#039;s Upper Panel.|center|thumb|750x750px|Location of the Quiz Preamble Generator&#039;s Upper Panel.]]&lt;br /&gt;
The &amp;quot;Bottom Screen&amp;quot; and &amp;quot;Top Screen&amp;quot; inputs are the map ID that should be used for that screen&#039;s background. Similarly, the Background Music Name/ID is a BGM name (or number) of the BGM that should play throughout the quiz. The &amp;quot;White Space?&amp;quot; checkbox will attempt to add indents to the output ExplorerScript lines, making the output script more human-readable.&lt;br /&gt;
&lt;br /&gt;
=== Preamble Text ===&lt;br /&gt;
This is the first of many direct inputs for ExplorerScript code. Due to the way spreadsheets store cell data, &amp;quot; &amp;quot; behave weirdly when present in the final script. Please use &#039; &#039; instead. This input is for the first set of dialogue before the questions actually begin. &lt;br /&gt;
[[File:Quiz Preamble Location.png|alt=Location of the Quiz Preamble Inputs|center|thumb|600x600px|Location of the Quiz Preamble Inputs]]&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
The orange output cell on this sheet is largely unimportant, but is present for debug purposes. It compiles the portions of the script using the inputs on this tab of the sheet.&lt;br /&gt;
&lt;br /&gt;
== Starter Selection Generator: Actually Adding the Starters... ==&lt;br /&gt;
This tab of the sheet is primarily for inputting data about the starters, or the personality pools they belong to. &lt;br /&gt;
&lt;br /&gt;
=== Upper Panel ===&lt;br /&gt;
[[File:Starter Selection Upper Panel.png|alt=The Upper Panel for the &amp;quot;Starter Selection Generator&amp;quot; Tab|thumb|750x750px|Location of the &amp;quot;Upper Panel&amp;quot; for the &amp;quot;Starter Selection Generator&amp;quot; Tab|center]]This upper panel contains 4 inputs, 3 of which are for Special Processes pertaining to starter selection. If other Special Processes have already been added, these Special Process IDs will need to be changed to free slots. The &amp;quot;White Space?&amp;quot; checkbox is the same as before, except for this tab of the sheet. The 4 grey cells are useful statistics about the input starters: how many different pools are used by the starters, how many species are present, and how many options there are for the hero and partner. &lt;br /&gt;
&lt;br /&gt;
=== Personality Pool Input ===&lt;br /&gt;
Next, on the lower right is the nature &amp;quot;Pool&amp;quot; input. These contain the pool name, and the text that should be displayed if that pool is selected by the quiz. &lt;br /&gt;
[[File:Personality Pools Input.png|alt=Location of the &amp;quot;Personality Pool Input&amp;quot;, where nature names and descriptions go.|center|thumb|450x450px|Location of the &amp;quot;Personality Pool Input&amp;quot;, where nature names/descriptions go.]]&lt;br /&gt;
The &amp;quot;Pool Name&amp;quot; field is only used by the Question Generator Tab, and will not show up anywhere in the final script. Modify these as desired as soon as possible, as it will be difficult to do so after designing the quiz questions. &#039;&#039;&#039;For best results, ensure all pool names are unique!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Starter Species Data ===&lt;br /&gt;
The bottom left segment of the sheet is the &amp;quot;Starter Species Data&amp;quot; input. This is part of a wider table, but each segment will be discussed individually. &lt;br /&gt;
[[File:Starter Species Data Location.png|alt=Location of &amp;quot;Starter Species Data&amp;quot;, where species-specific starter info goes.|center|thumb|750x750px|Location of &amp;quot;Starter Species Data&amp;quot;, where species-specific starter info goes.]]&lt;br /&gt;
While some of these fields should be intuitive, A brief description of each column is as follows:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Species Name:&#039;&#039;&#039; The name of the species as you want it shown in the quiz. If the cell turns purple on entering a species name, this means the Pokémon could not be found in &#039;&#039;&#039;Vanilla Translation Strings&#039;&#039;&#039;. French and German Translations will need to be added by hand, or all strings involving the Pokémon will need to be translated manually.&lt;br /&gt;
* &#039;&#039;&#039;Species ID:&#039;&#039;&#039; The ID in SkyTemple of the Pokémon. &#039;&#039;&#039;[TODO: Explain how this is affected by ExpandPokeList]&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Gender:&#039;&#039;&#039; The gender of the Pokémon, used to set the frame color, and to add &amp;quot;♂&amp;quot; and &amp;quot;♀&amp;quot; to the hero/partner selection list. 0 is Male, 1 is Female, and 2 is Genderless.&lt;br /&gt;
* &#039;&#039;&#039;Pool ID:&#039;&#039;&#039; The number of the Pool the Pokémon should be categorized under. Each Pool that could be chosen by the Quiz should have at least one valid Pokémon, or Bulbasaur will be selected as a failsafe. &#039;&#039;&#039;If the species are not sorted by Pool ID, cells will turn red. The sheet will produce invalid labels if this table is not sorted by Pool ID!&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Start w/ Vowel:&#039;&#039;&#039; If the Pokémon should be referred to as &amp;quot;...an [Pokémon]&amp;quot;, check this box.&lt;br /&gt;
&lt;br /&gt;
=== Talk Group &amp;amp; Role Exclusion ===&lt;br /&gt;
Continuing along the table, the next two subsections are for &amp;quot;Talk Groups&amp;quot; and &amp;quot;Role Exclusion&amp;quot;. Both of these segments relate to either the hero, or the partner.&lt;br /&gt;
[[File:Talk Groups and Role Exclusion.png|alt=Location of Talk Group and Role Exclusion Inputs|center|thumb|300x300px|Location of Talk Group and Role Exclusion Inputs]]&lt;br /&gt;
In the vanilla game, the hero and partner have differing dialogue depending on their species-specific &amp;quot;Talk Group&amp;quot;. These columns are dedicated to assigning the talk group for the hero or partner if that row&#039;s species is chosen. While it handles pronouns for dialogue, especially in gendered languages, it also affects the way the partner&#039;s dialogue is written. It does the same for the hero&#039;s dialogue, but in the English localization it only affects 2 lines in the entire game (&amp;quot;Whoa&amp;quot; &amp;lt;-&amp;gt; &amp;quot;Wah&amp;quot;, &amp;quot;All right&amp;quot; &amp;lt;-&amp;gt; &amp;quot;OK&amp;quot;). This is how they are used in vanilla:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Explorers of Sky Talk Groups&lt;br /&gt;
!#&lt;br /&gt;
!Used By&lt;br /&gt;
!Notable Species&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Partner&lt;br /&gt;
|Male Squirtle/Totodile/Chimchar/Meowth/Munchlax&lt;br /&gt;
|More Masculine/&amp;quot;Rural&amp;quot; Dialogue. (Refers to self as &amp;quot;Oira&amp;quot; in Japanese) &lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Partner&lt;br /&gt;
|All other Male Pokémon&lt;br /&gt;
|More Masculine/&amp;quot;Boyish&amp;quot; Dialogue. (Refers to self as &amp;quot;Boku&amp;quot; in Japanese)&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Partner&lt;br /&gt;
|All Female Pokémon&lt;br /&gt;
|More Feminine Dialogue. (Refers to self as &amp;quot;Watashi&amp;quot; in Japanese)&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Hero&lt;br /&gt;
|All Male/Genderless Pokémon&lt;br /&gt;
|Uses Masculine Pronouns&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Hero&lt;br /&gt;
|All Female Pokémon&lt;br /&gt;
|Uses Feminine Pronouns&lt;br /&gt;
|}&lt;br /&gt;
The &amp;quot;Role Exclusion&amp;quot; checkboxes blacklist the row from being an option as a hero or as a partner respectively. Certain Pokémon, particularly Meowth and Munchlax, are unable to be heroes in the vanilla game. This section is how to replicate that feature of the original quiz.&lt;br /&gt;
&lt;br /&gt;
=== Fuwarante Blacklist ===&lt;br /&gt;
Finally, on the far end of the table, is the Fuwarante Blacklist inputs. These are perhaps the most complicated portion of this tab of the sheet.[[File:Fuwarante Blacklist.png|alt=Location of the Fuwarante Blacklist|center|thumb|300x300px|Location of the Fuwarante Blacklist]]Each column corresponds to a bit of the script variable &amp;lt;code&amp;gt;$BIT_FUWARANTE_LOCAL&amp;lt;/code&amp;gt;. If the matching flag is on, the starter in that row &#039;&#039;&#039;cannot&#039;&#039;&#039; be chosen. This will be elaborated on further in the &amp;quot;Question Loop Generator&amp;quot;, but this is a brief explanation of what the bits represent by default:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Bit&lt;br /&gt;
!Description/Use Case&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|If enabled, &amp;lt;code&amp;gt;$PLAY_OLD_GAME&amp;lt;/code&amp;gt; will be true, meaning the player answered that they have played Time/Darkness before.&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|If enabled, the player has played EoS before, according to a custom starting question.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|If enabled, the player has participated in a Mystery Mail event before, according to a custom ending question.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|If enabled, the player claimed to be female in the final gender question. Enable for &#039;&#039;&#039;male&#039;&#039;&#039; starters.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|If enabled, the player claimed to be male in the final gender question. Enable for &#039;&#039;&#039;female&#039;&#039;&#039; starters.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
Once again, the orange output cells on the far right of this sheet are largely unimportant, but are present for debug purposes. It compiles the portions of the script using the inputs on this tab of the sheet.&lt;br /&gt;
&lt;br /&gt;
== Question Loop Generator: Before, After, and For How Long? ==&lt;br /&gt;
&lt;br /&gt;
=== Upper Panel ===&lt;br /&gt;
The upper panel of this sheet mostly consists of inputs, though the single output is a reminder of how many unique pools are used by the Starter Selection Generator. The input directly left of it is for telling the Question Loop Generator how many pools are in use, and should be changed to match the display. On the upper left of the panel, there are inputs for how many questions the game should ask the player, and how many questions will be written for the quiz to randomly choose from. In vanilla, there are 64 possible questions, and 8 will be given to the player.&lt;br /&gt;
[[File:Question Loop Generator Upper Panel.png|alt=Location of the Upper Panel of the Question Loop Generator|center|thumb|750x750px|Location of the Upper Panel of the Question Loop Generator]]&lt;br /&gt;
The bottom row consists of checkboxes to enable/disable the Custom/Standard First and Last Questions, such as the Gender Question and the Time/Darkness Question, which boosts recruit rates for certain species if you answer yes, and adds points to certain pools containing sky-exclusive Pokémon. &lt;br /&gt;
&lt;br /&gt;
=== ExplorerScript Pre/Post Quiz Questions ===&lt;br /&gt;
Room for an additional question before and after the quiz has also been made, which along with the Gender and Time/Darkness questions can be modified in the below ExplorerScript inputs:&lt;br /&gt;
[[File:Question Loop Generator ExplorerScript Inputs.png|alt=Location of the ExplorerScript Inputs|center|thumb|600x600px|Location of the ExplorerScript Inputs]]&lt;br /&gt;
These are the primary use-cases for the Fuwarante Blacklist described above. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;[S:0]&amp;lt;/code&amp;gt; text tag will be explained in further detail below. &lt;br /&gt;
&lt;br /&gt;
== Question Generator: Multiple Choice Monotony ==&lt;br /&gt;
Note: The &amp;quot;Yes.&amp;quot; and &amp;quot;No.&amp;quot; options have the &amp;lt;code&amp;gt;[S:0]&amp;lt;/code&amp;gt; text tag after them. This does functionally nothing, and exists primarily to aid in automatic string translation, as the localization teams translated the same English responses for questions differently based on context. This will be elaborated on further in &amp;quot;Full Script Translation&amp;quot;. If there are no plans to use the sheet&#039;s translation features, it is safe to remove any variants of &amp;lt;code&amp;gt;[S:0]&amp;lt;/code&amp;gt;. (instructions to do so in SkyTemple directly are present below).&lt;br /&gt;
&lt;br /&gt;
=== About Question Templates ===&lt;br /&gt;
This tab of the sheet is dedicated to the design and storage of the individual random questions in the quiz. The way this sheet works revolves   around &amp;quot;Question Templates&amp;quot; that store the question text, question number, answer text, pool ID, and points for that pool ID. Below is an example of a Question Template, and how it translates to question data: &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Do you prefer to be busy or have\na lot of free time?^35 |&amp;lt;code&amp;gt;Being busy.^11^4^8^2|Free time!^9^4|In between.^12^4&amp;lt;/code&amp;gt;&lt;br /&gt;
!Question Text&lt;br /&gt;
! colspan=&amp;quot;8&amp;quot; |Question #&lt;br /&gt;
|-&lt;br /&gt;
|Do you prefer to be busy or to have a lot of free time?&lt;br /&gt;
| colspan=&amp;quot;8&amp;quot; |35&lt;br /&gt;
|-&lt;br /&gt;
!Answer Text&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Pool 1 ID and Pts&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Pool 1 ID and Pts&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Pool 1 ID and Pts&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; |Pool 1 ID and Pts&lt;br /&gt;
|-&lt;br /&gt;
|Being busy.&lt;br /&gt;
|11&lt;br /&gt;
|4&lt;br /&gt;
|8&lt;br /&gt;
|2&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|Free time!&lt;br /&gt;
|9&lt;br /&gt;
|4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|In between.&lt;br /&gt;
|12&lt;br /&gt;
|4&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Question Template Input ===&lt;br /&gt;
&lt;br /&gt;
On the far left, is an input for an existing Question Template.[[File:Question Template Input.png|alt=Question Template Input Location|center|thumb|600x600px|Question Template Input Location]]The &amp;quot;Use Question Template Input&amp;quot; checkbox tells the sheet whether or not to use the Question Template provided. When writing questions entirely from scratch, disable this checkbox. When modifying existing questions, enable the checkbox, and paste in the Question Template. This will subsequently auto-fill the Question Data Inputs with the data within the template. If the auto-filled data itself needs to be altered, you will need to copy and &#039;&#039;&#039;paste values&#039;&#039;&#039; the data, then disable the checkbox.&lt;br /&gt;
&lt;br /&gt;
=== Question Data Inputs ===&lt;br /&gt;
[[File:Question Data Inputs.png|alt=Location of the Question Data Inputs Area|center|thumb|750x750px|Location of the Question Data Inputs Area]]&lt;br /&gt;
The Question Data Inputs Area should seem relatively intuitive. The question text is at the top, the answers are beneath, and up to 4 Personality Pools can gain points from each answer choice. The White Space checkbox is identical to the previous tab, and the question index is just the internal &amp;quot;ID&amp;quot; of the question. It should be incremented for each new question created, and will translate to the ID of the switch case in the final code. Note that the drop-down for the Pool Names is sourced from the Pool Names column of the Starter Selection Generator, and any changes to that list after creating the questions may lead to problems. With the current setup of the sheet, each question is limited to a maximum of 26 answer choices, but this limit is arbitrary, and can be circumvented by editing the question template manually, and pasting it in the Template List. In the event that a single question requires more than 26 choices, please ping happylappy in a support thread.&lt;br /&gt;
&lt;br /&gt;
=== Question Template Output &amp;amp; Template List ===&lt;br /&gt;
Finally, once the question is complete, a template for the question will be created in &amp;quot;Question Template Output&amp;quot;. &lt;br /&gt;
[[File:Question Template Output &amp;amp; Template List.png|alt=Location of Question Template Output &amp;amp; Template List|center|thumb|750x750px|Location of Question Template Output &amp;amp; Template List]]&lt;br /&gt;
Before moving onto the next question, copy the template output, and &#039;&#039;&#039;Paste Values&#039;&#039;&#039; in the corresponding slot on the &amp;quot;Question Template List&amp;quot;.   By default, templates for each vanilla question are already in the Question Template List, ready to be edited or modified by copying and pasting into the Question Template Input. The Script Output Column is again for debug purposes, and is read automatically by another tab of the sheet. &lt;br /&gt;
&lt;br /&gt;
== Personality Pool Selection Generator: Gerrymandering and Tie-Breaking ==&lt;br /&gt;
Once the quiz itself is completed, the points need to be tallied, so that a winning pool can be selected. The exact way that this happens in vanilla is a tad complicated, especially when it comes to breaking ties. Here are the steps that occur in vanilla:&lt;br /&gt;
&lt;br /&gt;
# Points are added to pools containing Sky-Exclusive Starters if the player has played Time/Darkness.&lt;br /&gt;
#* If Male is chosen for the gender question, +4 Points are added to Relaxed, Hasty, and Sassy. (Phanpy, Shinx, and Riolu)&lt;br /&gt;
#* If Female is chosen for the gender question, +4 Points are added to Relaxed and Jolly. (Vulpix and Eevee)&lt;br /&gt;
# The highest pool is found, and chosen.&lt;br /&gt;
#* If there is a tie, it is broken by adding a random number (0-19) to each, and rescoring the points.&lt;br /&gt;
#* If there is STILL a tie, it chooses the smallest pool it can.&lt;br /&gt;
This tab of the sheet serves to implement these two features in a customizable way.&lt;br /&gt;
&lt;br /&gt;
=== Upper Panel ===&lt;br /&gt;
About half of the upper panel is actually new this time. The &amp;quot;White Space&amp;quot; and &amp;quot;Number/# of Pools In Use&amp;quot; are unchanged, except they apply to this sheet.[[File:Pool Selection Generator Upper Panel.png|alt=Location of Pool Selection Generator Upper Panel|center|thumb|600x600px|Location of Pool Selection Generator Upper Panel]]The checkbox for &amp;quot;Do Pool Tinkering&amp;quot; enables/disables the Pool Tinkering portion of this sheet, while the &amp;quot;Maximum Tiebreaker Points&amp;quot; input determines the random value added to tied pools to decide a victor. Larger numbers result in less chance of a secondary tie, but could result in overflow for certain pools. &lt;br /&gt;
&lt;br /&gt;
=== Pool Tinkering ===&lt;br /&gt;
As stated above, the vanilla quiz favors pools with Sky-Exclusive Starters for the specified gender if they&#039;ve played Time/Darkness. Through checking the &amp;lt;code&amp;gt;$BIT_FUWARANTE_LOCAL&amp;lt;/code&amp;gt; flags from the &amp;quot;Question Loop Generator&amp;quot;, we can mimic this effect.&lt;br /&gt;
[[File:Pool Tinkering.png|alt=Location of Pool Tinkering Portion.|center|thumb|600x600px|Location of Pool Tinkering Portion.]]&lt;br /&gt;
On the far left, are the IDs of the two flags that should be checked (without modification, this could be 0 for &amp;quot;Time/Darkness&amp;quot;, and 3/4 for &amp;quot;Male/Female&amp;quot;). Depending on if the 1st and 2nd flags are true (1), or false (0), the selected pools (as many as needed) will gain the specified number of points. In order to accommodate for the &amp;quot;Surprise Me!&amp;quot; gender option, 2 points are given for male, 2 for &amp;quot;not male&amp;quot;, 2 for &amp;quot;female&amp;quot;, and 2 for &amp;quot;not female&amp;quot;, in order to influence every pool containing a sky-exclusive starter. (A similar process is done for the Time/Darkness exclusive starters I&#039;ve added to my example quiz, if the player has NOT played time/darkness). Up to 10 slots are present for pool tinkering, though more could be added if there is a pressing need. &lt;br /&gt;
&lt;br /&gt;
== Aura Bow Generator: Fortune Telling and Color Theory ==&lt;br /&gt;
The Aura Bow Generator serves to emulate the cinematics of the vanilla aura bow portion of the quiz. In addition to simply detecting when and for how long the player is touching the Aura Bow, the actual bow color needs to be determined! For the vanilla quiz, the process is as follows:&lt;br /&gt;
&lt;br /&gt;
* Use DS Favorite Color (75% Chance): If the DS Favorite Color is selected, the user&#039;s favorite color will match the color of the bow.&lt;br /&gt;
* Use DS Mac Address (25% Chance): If the Mac Address is selected, then &amp;lt;code&amp;gt;mac_address &amp;amp; 0xF&amp;lt;/code&amp;gt; determines the color of the bow.&lt;br /&gt;
&lt;br /&gt;
This functionality can be replicated by QuizMenuTool, and the chances can even be altered!&lt;br /&gt;
&lt;br /&gt;
=== Upper Panel ===&lt;br /&gt;
The Aura Bow Generator&#039;s Upper Panel is one of the largest of every tab, though many of these inputs are similar to prior tabs of the sheet. The top left input boxes are Special Process IDs for the 4 Special Processes needed to emulate the Aura Bow portion of the quiz, and the &amp;quot;White Space?&amp;quot; Checkbox is the same as always. The &amp;quot;Aura Bow Output&amp;quot; on the top right is the final script output for this tab, unnecessary outside of debug purposes.&lt;br /&gt;
[[File:Aura Bow Generator Upper Panel.png|alt=Location of the Aura Bow Generator Upper Panel.|center|thumb|600x600px|Location of the Aura Bow Generator Upper Panel.]]&lt;br /&gt;
Beginning with the bottom left of the panel, there are 4 map LEVEL names. &amp;quot;Bottom 1&amp;quot; is for the background while touching the Aura bow, Bottom Screen 2 is for the presentation of the colored Aura Bow, and the Bottom/Top Screen 3 is the backgrounds that the script should end with, when transitioning to the starter reveal. Finally, on the bottom right of the upper panel is the &amp;quot;Touch Screen Aura Bow Object Name&amp;quot;. Per the name, this is the name or ID of the object that should be present on the bottom screen, that will animate when the player touches it. The last three digits of the object seem to vary depending on unknown factors, so be sure to verify that yours matches by inspecting this object in M00A01A with SkyTemple.&lt;br /&gt;
[[File:Aura Bow Touch Object Name.png|alt=Where to check the Aura Bow Touch Object Name in SkyTemple|center|thumb|600x600px|Where to check the Aura Bow Touch Object Name in SkyTemple]]&lt;br /&gt;
&lt;br /&gt;
=== Aura Reading Panel ===&lt;br /&gt;
Beginning on the lower left of the tab, the Aura Reading Panel consists of 3 ExplorerScript code segments, which play before the blank aura bow fades in, after the aura bow fades in, and if the player lets go of the touch screen too quickly. &lt;br /&gt;
[[File:Aura Reading Panel.png|alt=Location of the Aura Reading Panel.|center|thumb|600x600px|Location of the Aura Reading Panel.]]&lt;br /&gt;
At the very bottom of this panel, there are inputs for dialogue in all 5 languages that will play during the aura reading process. Unlike most text in the quiz, &#039;&#039;&#039;this string must be translated here&#039;&#039;&#039;, as every localization takes a different amount of time to print the dialogue. The length of time the touch screen should have been held for is calculated for each [W:X] text tag, and compared against the actual length of time the touch screen was held. Customizing this text string is possible in the box, so these calculations must be done by the sheet. If your hack is for a US ROM, or will be english-only, disable the &amp;quot;Use EU Strings&amp;quot; Checkbox. &amp;quot;Expected Text Speed (# of chars per frame)&amp;quot; should be the speed your dialogue prints at in SkyTemple. This will ensure that the actual length of the text is properly accounted for in the calculation. &amp;quot;Touch Screen Frame Tolerance&amp;quot; is a grace period for letting go of the bow. This is necessary for certain emulators, damaged touch-screens, failure to account for the dialogue box opening/closing, etc. Feel free to adjust as desired, such that the quiz is possible to complete. &lt;br /&gt;
&lt;br /&gt;
=== Bow Selection Panel ===&lt;br /&gt;
Finally, the Bow Selection Panel handles the actual selection and presentation of the Aura Bow. [[File:Bow Selection Panel.png|alt=Bow Selection Panel Location.|center|thumb|600x600px|Bow Selection Panel Location.]]The upper left of the panel is for assigning weights to the three methods for selecting a bow color: DS Favorite Color, DS MAC Address, or a custom block of code. Note that these weights &#039;&#039;&#039;must be integers&#039;&#039;&#039; or the sheet will generate invalid code. For convenience, the percent chance of each option is computed by the sheet, based on the weights and total weight. The ExplorerScript input for the custom bow selection is on the right of this panel, and on the bottom left is the flavor-text for each bow color. &lt;br /&gt;
&lt;br /&gt;
== Variable Cleanup &amp;amp; End-Cap Generator: Nearly Finished! ==&lt;br /&gt;
This tab of the sheet aims to clean up the bevy of variables used by the quiz, and prep the game for actually running. Since QMT uses a majority of the script variables the game has to function, this tab resets them all back to what they should be at the beginning of a save file, now that the quiz no longer needs them. If some part of the quiz needs to be remembered, such as the color of the aura bow, whether the player has played Time/Darkness, or the winning Quiz personality pool, that needs to be preserved in this tab. In addition, this is the tab where the starters are officially initialized, which allows them to be nicknamed. Finally, the special process for actually assigning the starters, &amp;lt;code&amp;gt;PROCESS_SPECIAL_INIT_MAIN_TEAM_AFTER_QUIZ&amp;lt;/code&amp;gt;, will wipe &amp;lt;code&amp;gt;$CONFIG_COLOR_KIND&amp;lt;/code&amp;gt; clean, replacing it with what the real quiz determined your aura bow color to be. Because the real quiz never runs during QMT, this will always be zero. As a result, the aura bow color needs to be saved somewhere besides &amp;lt;code&amp;gt;$CONFIG_COLOR_KIND&amp;lt;/code&amp;gt;, then returned afterwards.  &lt;br /&gt;
&lt;br /&gt;
=== Upper Panel ===&lt;br /&gt;
This tab ALSO has an upper panel! The number of pools to clear should ideally match the number of pools in use. &amp;quot;White Space&amp;quot; does the same thing it has up to this point, and the far right output cell is read elsewhere, and only exists for debug purposes.&lt;br /&gt;
[[File:Variable Cleanup &amp;amp; End-Cap Upper Panel.png|alt=Variable Cleanup &amp;amp; End-Cap Upper Panel Location.|center|thumb|600x600px|Variable Cleanup &amp;amp; End-Cap Upper Panel Location.]]&lt;br /&gt;
In the center of the panel are three new checkboxes. &amp;quot;Name Partner?&amp;quot; and &amp;quot;Name Hero?&amp;quot; should be somewhat intuitive, they enable/disable the ExplorerScript inputs for naming the hero and partner respectively, which will be elaborated on below. Finally, &amp;quot;Set $VERSION to 1?&amp;quot; sets the &amp;lt;code&amp;gt;$VERSION&amp;lt;/code&amp;gt; script variable to 1 at the very end of the script. Without ASM modification, saving the game with this variable as anything besides 1 results in a &amp;quot;corrupt&amp;quot; save file. In the absence of a strong reason otherwise, this box should remain checked.&lt;br /&gt;
&lt;br /&gt;
=== Hero Name, Partner Name, &amp;amp; Closing Remarks ===&lt;br /&gt;
These ExplorerScript Inputs are for... the code used for nicknaming the partner and hero respectively, as well as the last few lines of text before the quiz truly ends.[[File:Hero-Partner-Closing Remarks Input.png|alt=Location of ExplorerScript Code Inputs.|center|thumb|600x600px|Location of ExplorerScript Code Inputs.]]Note that &amp;lt;code&amp;gt;MENU_PARTNER_NAME&amp;lt;/code&amp;gt; will not function without the dedicated SkyPatch, in the QMT github repo (linked at the top). Additionally, the menus themselves will close any active text-box the instant they are done printing, which is why the hero monologue ends with a &amp;lt;code&amp;gt;[K]&amp;lt;/code&amp;gt;. A &amp;lt;code&amp;gt;message_Close();&amp;lt;/code&amp;gt; would also suffice. Finally, the closing remarks should actually fade out the BGM and screen as desired. Feel free to optimize the fades, there is probably a more efficient way to achieve the right effect. &lt;br /&gt;
&lt;br /&gt;
=== Script Variable Preservation Panel ===&lt;br /&gt;
The Script Variable Preservation Panel serves to determine what information should be preserved after the quiz. By default, only the variables storing the personality pool counts are actually being erased, though certain configurations may require some variables to be kept, and others to be wiped in addition.[[File:Script Variable Preservation Panel.png|alt=Script Variable Preservation Panel Location.|center|thumb|600x600px|Script Variable Preservation Panel Location.]]Beginning at the top, is the &amp;quot;Variable Erasure Blacklist&amp;quot;. Based on other interactions with the sheet, the &amp;quot;Automatic Variables&amp;quot; will fill up automatically, but any script variables specified in this row will be kept as they are at the end of the quiz, and not erased. An example of a manual blacklist example might be &amp;lt;code&amp;gt;$VERSION&amp;lt;/code&amp;gt;, which doesn&#039;t need a dedicated line of code for erasure if it will ALSO be set to 1 at the end. The next row, &amp;quot;Additional Variables to Erase&amp;quot;, will be added to the list of erased variables if they are not already present. The &amp;lt;code&amp;gt;$BIT_FUWARANTE_LOCAL&amp;lt;/code&amp;gt; variables should be erased in addition, as the Driftblim Gondola will interpret these variables as valid station passes to enter. Below that, is the &amp;quot;Variable Transfer Table&amp;quot;. Prior to erasing anything, variables in the &amp;quot;Old Variable Name&amp;quot; column will be moved to the &amp;quot;New Variable Name&amp;quot;. The old variable will be slated for erasure, while the new one will be spared. For convenience, the &amp;quot;Variable Meaning&amp;quot; Tab on the left will autofill one or both of these columns depending on the option you select:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Variable Meaning&lt;br /&gt;
!Old Variable Name&lt;br /&gt;
!New Variable Name&lt;br /&gt;
!Comments&lt;br /&gt;
|-&lt;br /&gt;
|Aura Bow Preserve&lt;br /&gt;
|&amp;lt;code&amp;gt;$CONFIG_COLOR_KIND&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;$LOCAL0&amp;lt;/code&amp;gt;&lt;br /&gt;
|If this Variable Meaning is present, &amp;lt;code&amp;gt;$CONFIG_COLOR_KIND&amp;lt;/code&amp;gt; will be restored in post. It&#039;s only purpose is to prevent the quiz from wiping the variable on running  &amp;lt;code&amp;gt;PROCESS_SPECIAL_INIT_MAIN_TEAM_AFTER_QUIZ&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|Winning Pool&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_SUB7&amp;lt;/code&amp;gt;&lt;br /&gt;
|Any&lt;br /&gt;
|This variable retains the winning Pool ID from the quiz itself. This could prove useful for dialogue, or perhaps some other purpose?&lt;br /&gt;
|-&lt;br /&gt;
|Winning Points&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_SUB6&amp;lt;/code&amp;gt;&lt;br /&gt;
|Any&lt;br /&gt;
|This variable retains the number of points the winning Pool ID had after the tie-breaking process. This could prove useful for dialogue, or perhaps some other purpose?&lt;br /&gt;
|-&lt;br /&gt;
|Fuwarante Bit X&lt;br /&gt;
|&amp;lt;code&amp;gt;$BIT_FUWARANTE_LOCAL[X]&amp;lt;/code&amp;gt;&lt;br /&gt;
|Any&lt;br /&gt;
|These correspond directly to the FUWARANTE blacklist, and in this example is used to pass forward the Time/Darkness question to &amp;lt;code&amp;gt;$PLAY_OLD_GAME&amp;lt;/code&amp;gt;, the variable responsible for the recruitment rate buff for playing Time/Darkness.&lt;br /&gt;
|-&lt;br /&gt;
|Direct Script Variable&lt;br /&gt;
|Any&lt;br /&gt;
|Any&lt;br /&gt;
|This is an invitation to input whatever script variables are needed, and will adjust the coloration of the row to match. &lt;br /&gt;
|}&lt;br /&gt;
A full list of script variables with their appropriate descriptions will be provided in &amp;quot;Other Resources&amp;quot;, and might prove useful for more advanced tinkering in this panel.&lt;br /&gt;
&lt;br /&gt;
== Full Script Translation: EU ROM Superiority ==&lt;br /&gt;
This tab of the sheet is dedicated to translating all lines of dialogue into Spanish, French, German, and Italian, for an EU ROM. If the hack this is for doesn&#039;t need translation, this tab can be completely skipped. One of the most essential features of a translated quiz is the ability to pre-translate the vanilla text strings from the original quiz. &lt;br /&gt;
&lt;br /&gt;
=== Upper Panel ===&lt;br /&gt;
By default, the left-most checkbox of the upper panel will &amp;quot;activate&amp;quot; this sheet for translation. This may cause lag, and will cause more lag every time a change is made on one of the prior sheets, while enabled. Only begin translating once finished with the quiz, at least in the short term. [[File:Full Script Translation Upper Panel.png|alt=Location of the Full Script Translation Upper Panel.|center|thumb|600x600px|Location of the Full Script Translation Upper Panel.]]The &amp;quot;Auto-Translate Vanilla Strings&amp;quot; check-box will automatically search for and translate exact matches to vanilla Quiz strings. Additional translations can be added in &amp;quot;Vanilla Translation Strings&amp;quot; as needed. If no exact match is found, the translation will be left blank for manual translation. &amp;quot;Auto-Translate Pokemon&amp;quot; similarly will attempt to translate exact matches for dialogue specific to the final species. For example, the English string &amp;lt;code&amp;gt;[R][CN]Will be a [CS:K]Magnemite[CR]![W:60]&amp;lt;/code&amp;gt; will be automatically translated to &amp;lt;code&amp;gt;[R][CN]wird ein [CS:K]Magnetilo[CR]![W:60&amp;lt;/code&amp;gt;] (German), based on Magnemite&#039;s German name and the phrase &amp;quot;wird ein ___!&amp;quot;. This will only occur if the checkbox is enabled, and only for Pokemon names present in &amp;quot;Vanilla Translation Strings&amp;quot;. Finally, the &amp;quot;Trim [S:0] Before Translation&amp;quot; checkbox will remove all &amp;lt;code&amp;gt;[S:0]&amp;lt;/code&amp;gt; text tags from the dialogue before searching for a match, ensuring that the various &amp;quot;Yes.&amp;quot;, &amp;quot;No.&amp;quot;. &amp;quot;Of Course!&amp;quot;, and &amp;quot;Open it!&amp;quot; are not translated automatically, per their vanilla quiz questions. Regardless of whether this checkbox is enabled, the final script output will not contain the &amp;lt;code&amp;gt;[S:0]&amp;lt;/code&amp;gt; tags. &lt;br /&gt;
&lt;br /&gt;
=== String Translation Panel ===&lt;br /&gt;
The string translation panel, on the right of this tab, is where text string translation will actually occur. &lt;br /&gt;
[[File:String Translation Panel.png|alt=Location of String Translation Panel.|center|thumb|600x600px|Location of String Translation Panel.]]&lt;br /&gt;
On the left, are English lines of text extracted from other tabs of the sheet. each column corresponds to an EU language (Spanish, French, German, Italian). At the top of each column, is a count of how many untranslated lines of dialogue are left for that language, as well as a checkbox to enable/disable each language. In the above screenshot, French dialogue will not be added to the final script, because the checkbox is enabled. In the rows themselves, are pink cells (vanilla translated text), green cells (empty), and blue cells (manual translation). Simply review each pink cell, and manually translate the English for that row for green cells so they turn blue. If a pink cell needs editing, simply copy the cell, and &#039;&#039;&#039;Paste Values&#039;&#039;&#039; it on top of itself, and it will turn blue, which is safe to edit. &lt;br /&gt;
&lt;br /&gt;
== Vanilla Translation Strings: Future-Proofing The Sheet ==&lt;br /&gt;
This tab of the sheet is used to store vanilla strings from the base game, and official Pokemon translations. These can be amended and edited as desired, to include custom strings for auto-translation, or new Pokemon name translations. &lt;br /&gt;
[[File:Vanilla Translation Strings Dialogue.png|alt=Vanilla Translation Strings Dialogue|center|thumb|600x600px|Vanilla Translation Strings Dialogue]]&lt;br /&gt;
This area above contains all relevant vanilla strings, which can be added to or amended as desired, in the green cells in these 5 columns. If a need arises to make changes to the quiz after translation, it is best to move all manually translated lines to this tab, before making any changes. Additionally, the lookup table for Pokemon species names can be modified:&lt;br /&gt;
[[File:Vanilla Translation Strings Species.png|alt=Vanilla Translation Strings Species|center|thumb|452x452px|Vanilla Translation Strings Species]]&lt;br /&gt;
On the far right of the tab, are a list of every Pokemon through Scarlet &amp;amp; Violet, and the French/German translations for each species (Spanish and Italian use English species names). These can also be amended or added to as desired. &lt;br /&gt;
&lt;br /&gt;
== Full Script Compression: It&#039;s Finally Over? ==&lt;br /&gt;
Last but not least, is the Full Script Compression Tab. This tab compiles all of the information from the other tabs, and compresses it into a copy/pastable batch of scripts for SkyTemple. &lt;br /&gt;
&lt;br /&gt;
=== Upper Panel ===&lt;br /&gt;
There are a handful of settings in this upper panel. &amp;quot;White Space&amp;quot; is as it has been for every prior tab, but that&#039;s the only returning input.&lt;br /&gt;
[[File:Full Script Compression Upper Panel.png|alt=Full Script Compression Upper Panel Location.|center|thumb|600x600px|Full Script Compression Upper Panel Location.]]&lt;br /&gt;
&amp;quot;Use Full MegaScript&amp;quot; will compile the entire quiz into one script. This is only possible for English-only quizzes, and is only advised for quizzes with few questions and fewer starter choices. &amp;quot;Use Translated Scripts?&amp;quot; will use the outputs from Full Script Translation, which will be empty if the sheet is not active. Disable this checkbox for English-only quizzes. &amp;quot;Generate Unionall CORO&amp;quot; will create the unionall code needed to run the quiz, for a copy and paste replacement for the existing &amp;lt;code&amp;gt;CORO EVENT_M00A_01&amp;lt;/code&amp;gt; coroutine. The &amp;quot;Script File LEVEL Name&amp;quot; should reflect the location of the map LEVEL &amp;quot;folder&amp;quot; that the script file will actually be under. The &amp;quot;Script File SCRIPT Name&amp;quot; should become the name of the acting script itself, and should be 8 alphanumerical characters or fewer (not case-sensitive). Finally, the &amp;quot;Sector Param.&amp;quot; is the sector parameter of the &amp;lt;code&amp;gt;supervision_ExecuteActingSub();&amp;lt;/code&amp;gt; [[List of Opcodes#0x12d - supervision ExecuteActingSub|Opcode]]. Generally this should be zero, though none of these scripts internally utilize the sector parameter, should it be of interest for customization.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Script Outputs ===&lt;br /&gt;
This portion of the sheet consists of outputs to SkyTemple. Unlike most output cells thus far, these are actually intended for use!&lt;br /&gt;
[[File:SkyTemple Script Outputs.png|alt=SkyTemple Script Outputs Location.|center|thumb|600x600px|SkyTemple Script Outputs Location.]]&lt;br /&gt;
The intended places for each of these outputs will be described in &amp;quot;Importing The Scripts To SkyTemple&amp;quot;, but when copying a script, be sure to copy all cells in the box with text.&lt;br /&gt;
&lt;br /&gt;
== Importing The Scripts To SkyTemple ==&lt;br /&gt;
Now for the fun part! Actually applying everything to SkyTemple, and seeing the quiz actually play out. This section will briefly cover installation of SkyPatches and Special Processes, though more generalized guides for these things are or will be available. First though, prior installation of StarterMenuTool will change some of these steps. &lt;br /&gt;
=== Converting From StarterMenuTool ===&lt;br /&gt;
There are very few differences between starting fresh and converting from StarterMenuTool. The differences are as follows:&lt;br /&gt;
&lt;br /&gt;
* FixPartnerNameMenu is Applied: Since the SkyPatch is already applied, it does not need to be applied again. It can be reapplied without issue, though it already exists in the ROM.&lt;br /&gt;
* Existing Special Processes: Older versions of &amp;lt;code&amp;gt;starter_setter&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;set_frame_color&amp;lt;/code&amp;gt; were added via StarterMenuTool. These may function as intended for QMT, especially &amp;lt;code&amp;gt;set_frame_color&amp;lt;/code&amp;gt; which has seen zero change between the two tools, but it is recommended to update them by replacing them, or to use new slots for the QMT SPs.&lt;br /&gt;
* Existing Acting Script: StarterMenuTool takes the same approach as QMT in creating a new acting scene for the quiz itself. This existing script can be repurposed into one of the QMT acting scripts, though with SkyTemple alone it cannot be renamed, meaning the script name it will be used for in the Full Script Compression Upper Panel must be renamed.&lt;br /&gt;
* Edit to Vanilla Quiz: StarterMenuTool modifies the original quiz script m00a01a.ssb. While these changes have no net impact on QMT, it would impact the debug mode, as the code to create a team from the default starters has been removed. If this functionality needs to be restored, simply add the following line after &amp;quot;if ( debug ) {&amp;quot; in m00a01a.ssb:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;switch ( ProcessSpecial(PROCESS_SPECIAL_INIT_MAIN_TEAM_AFTER_QUIZ, 0, 0) ) { }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Existing Unionall Edit: StarterMenuTool also requires the modification of &amp;lt;code&amp;gt;coro EVENT_M00A_01&amp;lt;/code&amp;gt;. QuizMenuTool will require this coroutine to be edited to run m00a01a in debug mode, and the QMT scripts otherwise.&lt;br /&gt;
&lt;br /&gt;
=== Installing the SkyPatches ===&lt;br /&gt;
In order for QuizMenuTool to function, the following SkyPatches must be applied. &lt;br /&gt;
&lt;br /&gt;
* FixPartnerNameMenu: Gives &amp;lt;code&amp;gt;MENU_PARTNER_NAME&amp;lt;/code&amp;gt; the ability to actually nickname the partner. Requires ExtraSpace as a pre-requisite.&lt;br /&gt;
* ExtractSPCode: Enables the use of custom Special Processes used heavily by QMT.&lt;br /&gt;
&lt;br /&gt;
Installing FixPartnerNameMenu is relatively simple. After downloading the file from the github repo, navigate to &amp;lt;code&amp;gt;Patches -&amp;gt; ASM&amp;lt;/code&amp;gt; in SkyTemple. Then, click the &amp;quot;Open Patch Directory&amp;quot; button.&lt;br /&gt;
[[File:InstallFixPartnerNamePatch.png|alt=The &amp;quot;Open Patch Folder&amp;quot; button is on the bottom left.|center|thumb|600x600px|The &amp;quot;Open Patch Directory&amp;quot; button is on the bottom left.]]&lt;br /&gt;
Finally, drag &amp;lt;code&amp;gt;FixPartnerName.skypatch&amp;lt;/code&amp;gt; into the folder, and close it. The patch will now be in the &amp;quot;Others&amp;quot; Tab, ready for installation. If ExtraSpace is not installed, SkyTemple will prompt the installation of both patches sequentially. This is good, do that. &lt;br /&gt;
&lt;br /&gt;
Next, is the installation of ExtractSPCode. Once again, navigate to &amp;lt;code&amp;gt;Patches-&amp;gt;ASM&amp;lt;/code&amp;gt;, and select the &amp;quot;Utility&amp;quot; tab. Install ExtractSPCode, and any necessary pre-requisites (there shouldn&#039;t be any, except maybe ExtraSpace). &lt;br /&gt;
[[File:ExtractSPCode.png|alt=ExtractSPCode Location|center|thumb|600x600px|ExtractSPCode Location]]&lt;br /&gt;
&lt;br /&gt;
=== Applying The Special Processes ===&lt;br /&gt;
Now for installing the Special Processes themselves. If the hack already has custom Special Processes it wishes to keep, or the IDs of the special processes in the sheet have been changed, apply the SPs as desired, but ensure the sheet has accurate IDs (NOT Effects), so it can call them. For simplicity, these are the default locations of each SP:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Spreadsheet Tab&lt;br /&gt;
!Spreadsheet Input Name&lt;br /&gt;
!SP File Name&lt;br /&gt;
!ID&lt;br /&gt;
!Effect&lt;br /&gt;
|-&lt;br /&gt;
|Starter Selection Generator&lt;br /&gt;
|starter_setter SP ID&lt;br /&gt;
|starter_setter.asm&lt;br /&gt;
|64&lt;br /&gt;
|61&lt;br /&gt;
|-&lt;br /&gt;
|Starter Selection Generator&lt;br /&gt;
|set_frame_color SP ID&lt;br /&gt;
|set_frame_color.asm&lt;br /&gt;
|65&lt;br /&gt;
|62&lt;br /&gt;
|-&lt;br /&gt;
|Aura Bow Generator&lt;br /&gt;
|CheckTSPress SP ID&lt;br /&gt;
|CheckTSPress.asm&lt;br /&gt;
|66&lt;br /&gt;
|63&lt;br /&gt;
|-&lt;br /&gt;
|Aura Bow Generator&lt;br /&gt;
|ReturnTSPFrames SP ID&lt;br /&gt;
|ReturnTSPFrames.asm&lt;br /&gt;
|67&lt;br /&gt;
|64&lt;br /&gt;
|-&lt;br /&gt;
|Aura Bow Generator&lt;br /&gt;
|MoveText2TopScreen SP ID&lt;br /&gt;
|MoveText2TopScreen.asm&lt;br /&gt;
|68&lt;br /&gt;
|65&lt;br /&gt;
|-&lt;br /&gt;
|Starter Selection Generator&lt;br /&gt;
|Set_Demo_Character SP ID&lt;br /&gt;
|Set_Demo_Character.asm&lt;br /&gt;
|69&lt;br /&gt;
|66&lt;br /&gt;
|-&lt;br /&gt;
|Aura Bow Generator&lt;br /&gt;
|get_favorite_config_color SP ID&lt;br /&gt;
|get_favorite_config_color.asm&lt;br /&gt;
|70&lt;br /&gt;
|67&lt;br /&gt;
|}&lt;br /&gt;
Ensure that you download the correct set of special processes for your version of the ROM (US or EU). Next, navigate to                       &amp;lt;code&amp;gt;Patches-&amp;gt;ASM-&amp;gt;Special Processes&amp;lt;/code&amp;gt;, and click the &amp;quot;Add Special Process&amp;quot; button until enough IDs are in the list for each new Special Process.&lt;br /&gt;
[[File:How2AddSpecialProcesses1.png|alt=The &amp;quot;Add Special Process&amp;quot; button is at the very bottom.|center|thumb|600x600px|The &amp;quot;Add Special Process&amp;quot; button is at the very bottom.]]&lt;br /&gt;
The list should look like it does in the image when done. With that completed, navigate to the &amp;quot;Effects Code&amp;quot; tab. Click the &amp;quot;+&amp;quot; Button to create a new effect. Then, click the &amp;quot;Import Code&amp;quot; button at the bottom to select the special process to be imported to this effect.&lt;br /&gt;
[[File:How2AddSpecialProcesses2.png|center|thumb|600x600px|Clicking the &amp;quot;+&amp;quot; Button adds a new effect. Each new effect must have the correct .asm file imported into it, as specified in the table.]]&lt;br /&gt;
In the above image, Special Process &amp;lt;code&amp;gt;starter_setter.asm&amp;lt;/code&amp;gt; is being imported to Effect 61, which corresponds to ID 64. Similarly, &amp;lt;code&amp;gt;set_frame_color.asm&amp;lt;/code&amp;gt; should be imported to Effect 62 (ID 65), &amp;lt;code&amp;gt;CheckTSPress.asm&amp;lt;/code&amp;gt; should be imported to Effect 63, etc.&lt;br /&gt;
&lt;br /&gt;
Once all the necessary Special Processes have been imported to their effects, the last thing that needs to be done is assigning the effects to their IDs. Navigating back to the &amp;quot;Special Process Effects&amp;quot; tab, assign each effect to the correct ID, as shown below:&lt;br /&gt;
[[File:How2AddSpecialProcesses3.png|alt=Simply clicking on the effect cell will allow it to be edited.|center|thumb|600x600px|Simply clicking on the effect cell will allow it to be edited.]]&lt;br /&gt;
With that, SP importing is complete, and all that remains is to save the ROM.&lt;br /&gt;
&lt;br /&gt;
=== Creating QMT Script Files ===&lt;br /&gt;
Next, is the process of actually creating the QMT script files. For simplicity, this guide will demonstrate the process on LEVEL_S02P01A, the same location in the script files as the original quiz. If you plan on putting the QMT script files elsewhere, ensure this is properly accounted for in Full Script Compression. Navigate to Script Scenes-&amp;gt;S02P01A. If you are using a MegaScript, create ONE new acting scene. Otherwise, create four of them, each with the name in FullScriptCompression.&lt;br /&gt;
[[File:ImportingQMTScriptFiles1.png|alt=Be sure you click &amp;quot;Create Acting Scene&amp;quot;! It is important that these scripts are acting scenes.|center|thumb|600x600px|Be sure you click &amp;quot;Create Acting Scene&amp;quot;! It is important that these scripts are acting scenes.]]&lt;br /&gt;
The newly created scenes should appear in the Acting (ssa) folder. Navigate to the first one created, and double-click on &amp;quot;[script-name].ssb&amp;quot;.&lt;br /&gt;
[[File:ImportingQMTScriptFiles2.png|alt=In this case, &amp;quot;qmt01.ssb&amp;quot; on the right will open the script file&#039;s &amp;quot;ssb&amp;quot; code.|center|thumb|600x600px|In this case, &amp;quot;qmt01.ssb&amp;quot; on the right will open the script file&#039;s &amp;quot;ssb&amp;quot; code.]]&lt;br /&gt;
&lt;br /&gt;
From there, simply paste from the respective part of the sheet, and attempt to save the script.&lt;br /&gt;
[[File:ImportingQMTScriptFiles3.png|center|thumb|600x600px|You can also navigate between script files with the search bar on the left!]]&lt;br /&gt;
&lt;br /&gt;
Repeat the process of pasting in the remaining scripts. Finally, the script that contains the aura bow segment of the quiz (script #2 or the megascript) needs additional work done to the .ssa file. Navigate to S02P01A-&amp;gt;M00A01A, and click the Export Button (square with an up arrow in it).&lt;br /&gt;
[[File:Export Quiz .ssa.png|alt=Visual for exporting the .ssa for M00A01A for QuizMenuTool|center|thumb|600x600px|The Export Button is up top!]]&lt;br /&gt;
Then just import this file into the script containing the Aura Bow segment, as shown below:&lt;br /&gt;
[[File:Aura Bow SSA import.png|center|thumb|600x600px|The Export Button is right next to the Import button!]]&lt;br /&gt;
After that, save the ROM. The quiz is nearly ready, all that&#039;s left is setting up unionall...&lt;br /&gt;
&lt;br /&gt;
=== Editing Unionall ===&lt;br /&gt;
Unionall is a big file, but there&#039;s only a very specific part that needs to be edited. Open Unionall by using the search bar in the Script Engine Debugger, then do CTRL + F (Command + F for Mac, you should know your equivalent if you use Linux) to find coroutine inside unionall.&lt;br /&gt;
[[File:Unionall coro EVENT M00A 01.png|center|thumb|600x600px|Be sure you search for EXACTLY &amp;quot;coro EVENT_M00A_01&amp;quot;. This should be the only match!]]&lt;br /&gt;
Once you find it, select the entire coroutine, and replace it with the unionall final output. the result should look something like this:&lt;br /&gt;
[[File:QMT coro EVENT M00A 01.png|center|thumb|600x600px|Modified Unionall Coroutine, should look roughly like this after pasting.]]&lt;br /&gt;
With that, save unionall, and the quiz is ready for testing! &lt;br /&gt;
&lt;br /&gt;
== Other Resources ==&lt;br /&gt;
&lt;br /&gt;
=== QMT Script Variable Map ===&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Scenario_Main_Values&amp;diff=1127</id>
		<title>Scenario Main Values</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Scenario_Main_Values&amp;diff=1127"/>
		<updated>2025-07-27T01:26:22Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add documentation category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
The following table is a work-in-progress list of the scenario main (&amp;lt;code&amp;gt;$SCENARIO_MAIN&amp;lt;/code&amp;gt;) values used by the vanilla game. These values help the game know where you are in the story and what events have (or have not) been triggered. They are also used to determine things that change based on story progression, such as which NPCs spawn in Treasure Town or the dialogue said by the partner if you turn to talk to them in the overworld. &lt;br /&gt;
&lt;br /&gt;
The format used by the game for defining this variable is &amp;lt;code&amp;gt;$SCENARIO_MAIN = scn[1, 0];&amp;lt;/code&amp;gt; where the two numbers in the brackets change depending on story progression. &lt;br /&gt;
&lt;br /&gt;
For scripts that check for specific $SCENARIO_MAIN values using if-statements (such as to determine what partner dialogue should be played at that point in the story), you will usually see the value mentioned in a format like the following, which is taken from one of the partner&#039;s overworld dialogue scripts: &amp;lt;code&amp;gt;if ( scn($SCENARIO_MAIN) &amp;gt;= [26, 5] )&amp;lt;/code&amp;gt; . In this example, the game is checking to see if the current $SCENARIO_MAIN value is &#039;&#039;greater than or equal to&#039;&#039; &amp;lt;code&amp;gt;[26, 5]&amp;lt;/code&amp;gt; and, if that is indeed the case, then the partner&#039;s overworld dialogue will be some variation of &amp;quot;We&#039;re so close... There&#039;s no way we can give up now, [hero]!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub&amp;gt;Because some scripts have identical names, the column for the script locations of each $SCENARIO_MAIN value will also include the name of the map folder they are found in. For example, the $SCENARIO_MAIN value that gets triggered following the Project P cutscene can be triggered by four seprate enter scripts that have identical names (&#039;&#039;enter01.ssb&#039;&#039; and &#039;&#039;enter02.ssb&#039;&#039;, respectively), so the corresponding map folder names are also included to help users know which enter scripts to look for.&amp;lt;/sub&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable center&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Scenario Main (Values)&lt;br /&gt;
!Game Chapter&lt;br /&gt;
!Description&lt;br /&gt;
!Script location of the value&lt;br /&gt;
!Other notes&lt;br /&gt;
!Other scripts that mention this value&lt;br /&gt;
!Debug Menu (that uses this value)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[1, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|Immediately &amp;lt;u&amp;gt;BEFORE&amp;lt;/u&amp;gt; the personality quiz&lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_DIVIDE_OPENING&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 900&#039;&#039;&lt;br /&gt;
|Contained within the larger &amp;lt;code&amp;gt;EVENT_DIVIDE&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[2, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|Immediately &amp;lt;u&amp;gt;AFTER&amp;lt;/u&amp;gt; the personality quiz&lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_M00A_01&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2261&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[2, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_DIVIDE_FIRST&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 967&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;happylappy&#039;&#039;&#039;&#039;&#039; writes that this is in a switch case in &amp;lt;code&amp;gt;EVENT_DIVIDE&amp;lt;/code&amp;gt; over $SCENARIO_MAIN&lt;br /&gt;
&#039;&#039;“Basically, if it’s [X, 0], make it [X, 1]… for these chapters only”&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;(also applies to scn[3, 1];)&amp;lt;/small&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[2, 2];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
!&#039;&#039;&#039;Chapter 1&#039;&#039;&#039;&lt;br /&gt;
|Partner’s Relic Fragment was just stolen on the beach&lt;br /&gt;
|&#039;&#039;&#039;D01P11B&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;m01a0208.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[2, 3];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 1&lt;br /&gt;
|Pre-fight in Beach Cave&lt;br /&gt;
|&#039;&#039;&#039;D01P41A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m01a0401.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|Visual of the Rainbow Stoneship along with &#039;&#039;“The Pokémon Company and CHUNSOFT presents”&#039;&#039; before the game title appears&lt;br /&gt;
|&#039;&#039;&#039;S11P02C&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;t01p0801.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2150&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Main 2&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
!&#039;&#039;&#039;Chapter 2&#039;&#039;&#039;&lt;br /&gt;
|About to enter Wigglytuff’s Guild for the first time with the partner&lt;br /&gt;
|&#039;&#039;&#039;G01P01B&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a0101.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|This value appears in the script mentioned by the previous cell, EVENT_DIVIDE, the debug script, and also in a switch case in EVENT_DIVIDE_FIRST (exact locations can be found in the next cell)&lt;br /&gt;
Same note from &#039;&#039;&#039;&#039;&#039;happylappy&#039;&#039;&#039;&#039;&#039; as [2, 1] where &#039;&#039;“Basically, if it’s [X, 0], make it [X, 1]… for these chapters only”&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1599&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 393&#039;&#039;&lt;br /&gt;
----Found in &#039;&#039;&#039;unionall.ssb&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_DIVIDE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 750&#039;&#039;&lt;br /&gt;
----Found in &#039;&#039;&#039;unionall.ssb&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_DIVIDE_FIRST&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 983&#039;&#039;&lt;br /&gt;
|(under “Others”)&lt;br /&gt;
&#039;&#039;&#039;M2 The First Job&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----(under “Dialogue Check”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK-M02-01&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 2];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 2&lt;br /&gt;
|Chatot has you follow him since it’s your first day (about to learn about the Job Bulletin Board)&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a0301.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 3];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 2&lt;br /&gt;
|Entering Drenched Bluff for Spoink’s mission&lt;br /&gt;
|&#039;&#039;&#039;D02P11A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a0401.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 4];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 2&lt;br /&gt;
|Enter Drenched Bluff for Spoink’s mission &#039;&#039;(if you failed previously)&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;D02P11A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a0701.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|This one is found in a case menu&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 5];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 2&lt;br /&gt;
|Enter Drenched Bluff for Spoink’s mission &#039;&#039;(if you failed previously)&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;D02P11A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a0701.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|This one is in a case menu, same scene as above&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 6];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 2&lt;br /&gt;
|You find Spoink’s missing pearl at the end of Drenched Bluff&lt;br /&gt;
|&#039;&#039;&#039;D02P31A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a0801.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|This one is in a case menu, probably relating to the &#039;&#039;&#039;demo version&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 7];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 2&lt;br /&gt;
|You find Spoink’s missing pearl at the end of Drenched Bluff&lt;br /&gt;
|&#039;&#039;&#039;D02P31A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a0801.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|This one is in a case menu, probably relating to the &#039;&#039;&#039;demo version&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 2&lt;br /&gt;
|Going to bed after your first successful job mission (also the end of chapter 2)&lt;br /&gt;
|&#039;&#039;&#039;G01P07C&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a1003.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1896&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1607&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 401&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Main 3&#039;&#039;&#039;&lt;br /&gt;
----(under “Others”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M3 Outlaw Notice Board&#039;&#039;&#039;&lt;br /&gt;
----(under “Dialogue Check”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK-M03-01B&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Chapter 3&lt;br /&gt;
|Chatot notices you wandering the day after your first mission (about to learn about the Outlaw Notice Board)&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m03a0101.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1615&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 406&#039;&#039;&lt;br /&gt;
|(under “Others”)&lt;br /&gt;
&#039;&#039;&#039;Not That Way&#039;&#039;&#039;&lt;br /&gt;
----(under “Dialogue Check”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK-M03-02&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 2];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 3&lt;br /&gt;
|Meeting Marill and Azurill for the first time at Kecleon Market&lt;br /&gt;
|&#039;&#039;&#039;T01P02A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m03a0301.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1623&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 411&#039;&#039;&lt;br /&gt;
|(under “Others”)&lt;br /&gt;
&#039;&#039;&#039;M3 Drowzee&#039;&#039;&#039;&lt;br /&gt;
----(under “Dialogue Check”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK-M03-03&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 3];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 3&lt;br /&gt;
|Meeting Drowzee for the first time&lt;br /&gt;
|&#039;&#039;&#039;T01P01A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m03a0401.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1631&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 416&#039;&#039;&lt;br /&gt;
|(under “Others”)&lt;br /&gt;
&#039;&#039;&#039;M3 Truth&#039;&#039;&#039;&lt;br /&gt;
----(under “Dialogue Check”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK-M03-04&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 4];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 3&lt;br /&gt;
|Bidoof is about to help you pick your first outlaw job&lt;br /&gt;
|&#039;&#039;&#039;G01P03A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m03a0502.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;D01P11A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;dus08.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 5];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 3&lt;br /&gt;
|About to enter Mt. Bristle to save Azurill from Drowzee&lt;br /&gt;
|&#039;&#039;&#039;D03P11A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m03a0601.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 421&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M03-06&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 6];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 3&lt;br /&gt;
|Drowzee reveals that it was all a trick to Azurill (pre-boss fight)&lt;br /&gt;
|&#039;&#039;&#039;D03P41A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m03a0801.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|For whatever reason, this particular variable appears twice in the same script (at the start of the scene and then right after the boss fight screen wipe effect)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 7];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 3&lt;br /&gt;
|Drowzee is defeated and you rescue Azurill&lt;br /&gt;
|&#039;&#039;&#039;D03P41A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m03a1001.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 426&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M03-08&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|Requires you to do &#039;&#039;&#039;3+ missions&#039;&#039;&#039; and &amp;lt;code&amp;gt;scn[4, 7];&amp;lt;/code&amp;gt; &lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2283&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2160&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Main 4&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Chapter 4&lt;br /&gt;
|Loudred calls you over to do sentry duty for the first time&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m04a0101.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 2];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 4&lt;br /&gt;
|Triggers as the hero and partner are crawling to the sentry post&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m04a0106.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 3];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 4&lt;br /&gt;
|You have just completed sentry duty for the first time, and are about to hear your results&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m04a0201.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 4];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 4&lt;br /&gt;
|Triggers just after you receive the results if you failed sentry duty&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
m04a0201.ssb&lt;br /&gt;
|Only triggers if you failed sentry duty&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 5];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 4&lt;br /&gt;
|Triggers after you’ve seen the cutscene where your team and Loudred go without dinner, which only happens if you failed sentry duty&lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_M04_02_03&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 3242&#039;&#039;&lt;br /&gt;
|&#039;&#039;Only triggers if  &amp;lt;code&amp;gt;scn[5, 4];&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Appears in a switch case&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 431&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK-M04-03&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 6];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 4&lt;br /&gt;
|Requires you to do &#039;&#039;&#039;2+ missions&#039;&#039;&#039; and &amp;lt;code&amp;gt;scn[5, 5];&amp;lt;/code&amp;gt; &lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2314&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 7];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 4&lt;br /&gt;
|Requires you to &#039;&#039;&#039;“do 0+ missions”&#039;&#039;&#039; and &amp;lt;code&amp;gt;scn[5, 6];&amp;lt;/code&amp;gt; &lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2325&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;happylappy&#039;&#039;&#039;&#039;&#039; suspects that this, and others like it, are just counting the number of days that pass&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 8];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 4&lt;br /&gt;
|Requires you to &#039;&#039;&#039;“do 0+ missions”&#039;&#039;&#039; and &amp;lt;code&amp;gt;scn[5, 7];&amp;lt;/code&amp;gt; &lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2336&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[6, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Chapter 5&lt;br /&gt;
|Requires you to &#039;&#039;&#039;“do 0+ missions”&#039;&#039;&#039; and&amp;lt;code&amp;gt;scn[5, 8];&amp;lt;/code&amp;gt; &lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under &lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2347&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2165&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Main 5&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[6, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 5&lt;br /&gt;
|Morning address where Chatot announces that Treeshroud Forest’s Time Gear has been stolen&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m05a0101.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 436&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M05-02&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[6, 2];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 5&lt;br /&gt;
|Triggers after you tell Chatot you understand the details of your mission to investigate Waterfall Cave&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m05a0203.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[6, 3];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 5&lt;br /&gt;
|Chimecho Assembly opens&lt;br /&gt;
|&#039;&#039;&#039;G01P03A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m00p0101.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[6, 4];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 5&lt;br /&gt;
|The hero and partner discover the stairs to Spinda’s shop for the first time (“opening soon!”)&lt;br /&gt;
|&#039;&#039;&#039;P01P01A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;s30a0101.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[6, 5];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 5&lt;br /&gt;
|Triggers when you enter Waterfall Cave for the first time&lt;br /&gt;
|&#039;&#039;&#039;D04P12A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m05a0304.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 441&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M05-04&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[6, 6];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 5&lt;br /&gt;
|Reaching the bottom of Waterfall Cave&lt;br /&gt;
|&#039;&#039;&#039;D04P31A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m05a0601.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[7, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 5&lt;br /&gt;
|After dinner, Wigglytuff tells your team about the upcoming expedition&lt;br /&gt;
|&#039;&#039;&#039;G01P05C&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m05a0911.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2170&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Main 6&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[7, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Chapter 6&lt;br /&gt;
|During the morning address, Chatot talks to everyone about the expedition&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m06a0101.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 446&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M06-02&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[7, 2];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|About to encounter Koffing and Zubat at the job boards&lt;br /&gt;
|&#039;&#039;&#039;G01P03A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m06a0201.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 451&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M06-03&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[7, 3];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Opening cutscene for Spinda’s Café&lt;br /&gt;
|&#039;&#039;&#039;P01P01A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;s30a0201.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 456&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M06-035&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[7, 4];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Loudred calls the hero and partner over for sentry duty (again)&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m06a0401.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[7, 5];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Diglett has something else he has to do, and needs your team to do sentry duty again&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m06a0401.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;m06a0403.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|Triggers twice for whatever reason. The first time is at the start of the scene where Diglett asks for your help again, and the second time is after you confirm to Loudred that you understand what you need to do (i.e. right before the sentry duty minigame starts)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[7, 6];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Chatot has just announced that Team Skull will be living at the guild until the expedition&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m06a0501.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 461&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M06-05&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Requires &amp;lt;code&amp;gt;scn[7, 6];&amp;lt;/code&amp;gt;&lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under &lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2431&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2175&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Main 7&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Chatot asks your team to go find Perfect Apples at Apple Woods&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m07a0301.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 466&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M07-02&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 2];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Entering Apple Woods for the first time&lt;br /&gt;
|&#039;&#039;&#039;D05P11A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m07a0601.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 471&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M07-04&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 3];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch, 6&lt;br /&gt;
|Reaching the end of Apple Woods and encountering Team Skul&lt;br /&gt;
|&#039;&#039;&#039;D05P31A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m07a0701.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 4];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|The other guild apprentices sneak in some food for the hero and partner&lt;br /&gt;
|&#039;&#039;&#039;G01P07A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m07a1302.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 476&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M07-06&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 5];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Project P is introduced to the player for the first time upon entering the crossroads&lt;br /&gt;
|&#039;&#039;&#039;P01P01A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;s30a0301.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 481&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M07-065&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 6];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Seems to be triggered upon re-entering the crossroads after having seen the Project P cutscene (i.e., having &amp;lt;code&amp;gt;scn[8, 5];&amp;lt;/code&amp;gt;)&lt;br /&gt;
|&#039;&#039;&#039;G01P01A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;enter02.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
----&#039;&#039;&#039;P01P02A&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;enter02.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
----&#039;&#039;&#039;P01P04A&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;enter01.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
----&#039;&#039;&#039;T01P01A&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;enter01.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|This value can be triggered by four different enter scripts that all connect to the crossroads&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 488&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M07-067&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 7];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Requires you to do &#039;&#039;&#039;1+ missions&#039;&#039;&#039; and &amp;lt;code&amp;gt;scn[8, 6];&amp;lt;/code&amp;gt; &lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under &lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2358&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 493&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M07-08&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 8];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Requires you to do &#039;&#039;&#039;sentry duty&#039;&#039;&#039; and have&amp;lt;code&amp;gt;scn[8, 7];&amp;lt;/code&amp;gt;&lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under &lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2370&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 9];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Requires you to “&#039;&#039;&#039;do 0+ missions”&#039;&#039;&#039; and &amp;lt;code&amp;gt;scn[8, 8];&amp;lt;/code&amp;gt;&lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under &lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2381&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[9, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Requires you to &#039;&#039;&#039;“do 0+ missions”&#039;&#039;&#039; and &amp;lt;code&amp;gt;scn[8, 9];&amp;lt;/code&amp;gt; &lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under &lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2392&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2180&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Main 8&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[9, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Announcement of the expedition members during the morning address&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m08a0301.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1639&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1646&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 498&#039;&#039;&lt;br /&gt;
|(under “Others”)&lt;br /&gt;
&#039;&#039;&#039;M8 Ready for the Expedition?&#039;&#039;&#039; &lt;br /&gt;
----(under “Others”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M8 First Time to Craggy Coast&#039;&#039;&#039;&lt;br /&gt;
----(under “Dialogue Check”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK-M08-02&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Scenario_Main_Values&amp;diff=1126</id>
		<title>Scenario Main Values</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Scenario_Main_Values&amp;diff=1126"/>
		<updated>2025-07-27T01:24:19Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add stub template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Stub}}&lt;br /&gt;
&lt;br /&gt;
The following table is a work-in-progress list of the scenario main (&amp;lt;code&amp;gt;$SCENARIO_MAIN&amp;lt;/code&amp;gt;) values used by the vanilla game. These values help the game know where you are in the story and what events have (or have not) been triggered. They are also used to determine things that change based on story progression, such as which NPCs spawn in Treasure Town or the dialogue said by the partner if you turn to talk to them in the overworld. &lt;br /&gt;
&lt;br /&gt;
The format used by the game for defining this variable is &amp;lt;code&amp;gt;$SCENARIO_MAIN = scn[1, 0];&amp;lt;/code&amp;gt; where the two numbers in the brackets change depending on story progression. &lt;br /&gt;
&lt;br /&gt;
For scripts that check for specific $SCENARIO_MAIN values using if-statements (such as to determine what partner dialogue should be played at that point in the story), you will usually see the value mentioned in a format like the following, which is taken from one of the partner&#039;s overworld dialogue scripts: &amp;lt;code&amp;gt;if ( scn($SCENARIO_MAIN) &amp;gt;= [26, 5] )&amp;lt;/code&amp;gt; . In this example, the game is checking to see if the current $SCENARIO_MAIN value is &#039;&#039;greater than or equal to&#039;&#039; &amp;lt;code&amp;gt;[26, 5]&amp;lt;/code&amp;gt; and, if that is indeed the case, then the partner&#039;s overworld dialogue will be some variation of &amp;quot;We&#039;re so close... There&#039;s no way we can give up now, [hero]!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub&amp;gt;Because some scripts have identical names, the column for the script locations of each $SCENARIO_MAIN value will also include the name of the map folder they are found in. For example, the $SCENARIO_MAIN value that gets triggered following the Project P cutscene can be triggered by four seprate enter scripts that have identical names (&#039;&#039;enter01.ssb&#039;&#039; and &#039;&#039;enter02.ssb&#039;&#039;, respectively), so the corresponding map folder names are also included to help users know which enter scripts to look for.&amp;lt;/sub&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable center&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Scenario Main (Values)&lt;br /&gt;
!Game Chapter&lt;br /&gt;
!Description&lt;br /&gt;
!Script location of the value&lt;br /&gt;
!Other notes&lt;br /&gt;
!Other scripts that mention this value&lt;br /&gt;
!Debug Menu (that uses this value)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[1, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|Immediately &amp;lt;u&amp;gt;BEFORE&amp;lt;/u&amp;gt; the personality quiz&lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_DIVIDE_OPENING&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 900&#039;&#039;&lt;br /&gt;
|Contained within the larger &amp;lt;code&amp;gt;EVENT_DIVIDE&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[2, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|Immediately &amp;lt;u&amp;gt;AFTER&amp;lt;/u&amp;gt; the personality quiz&lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_M00A_01&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2261&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[2, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_DIVIDE_FIRST&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 967&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;happylappy&#039;&#039;&#039;&#039;&#039; writes that this is in a switch case in &amp;lt;code&amp;gt;EVENT_DIVIDE&amp;lt;/code&amp;gt; over $SCENARIO_MAIN&lt;br /&gt;
&#039;&#039;“Basically, if it’s [X, 0], make it [X, 1]… for these chapters only”&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;(also applies to scn[3, 1];)&amp;lt;/small&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[2, 2];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
!&#039;&#039;&#039;Chapter 1&#039;&#039;&#039;&lt;br /&gt;
|Partner’s Relic Fragment was just stolen on the beach&lt;br /&gt;
|&#039;&#039;&#039;D01P11B&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;code&amp;gt;m01a0208.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[2, 3];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 1&lt;br /&gt;
|Pre-fight in Beach Cave&lt;br /&gt;
|&#039;&#039;&#039;D01P41A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m01a0401.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|Visual of the Rainbow Stoneship along with &#039;&#039;“The Pokémon Company and CHUNSOFT presents”&#039;&#039; before the game title appears&lt;br /&gt;
|&#039;&#039;&#039;S11P02C&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;t01p0801.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2150&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Main 2&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
!&#039;&#039;&#039;Chapter 2&#039;&#039;&#039;&lt;br /&gt;
|About to enter Wigglytuff’s Guild for the first time with the partner&lt;br /&gt;
|&#039;&#039;&#039;G01P01B&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a0101.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|This value appears in the script mentioned by the previous cell, EVENT_DIVIDE, the debug script, and also in a switch case in EVENT_DIVIDE_FIRST (exact locations can be found in the next cell)&lt;br /&gt;
Same note from &#039;&#039;&#039;&#039;&#039;happylappy&#039;&#039;&#039;&#039;&#039; as [2, 1] where &#039;&#039;“Basically, if it’s [X, 0], make it [X, 1]… for these chapters only”&#039;&#039; &lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1599&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 393&#039;&#039;&lt;br /&gt;
----Found in &#039;&#039;&#039;unionall.ssb&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_DIVIDE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 750&#039;&#039;&lt;br /&gt;
----Found in &#039;&#039;&#039;unionall.ssb&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_DIVIDE_FIRST&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 983&#039;&#039;&lt;br /&gt;
|(under “Others”)&lt;br /&gt;
&#039;&#039;&#039;M2 The First Job&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----(under “Dialogue Check”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK-M02-01&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 2];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 2&lt;br /&gt;
|Chatot has you follow him since it’s your first day (about to learn about the Job Bulletin Board)&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a0301.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 3];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 2&lt;br /&gt;
|Entering Drenched Bluff for Spoink’s mission&lt;br /&gt;
|&#039;&#039;&#039;D02P11A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a0401.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 4];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 2&lt;br /&gt;
|Enter Drenched Bluff for Spoink’s mission &#039;&#039;(if you failed previously)&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;D02P11A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a0701.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|This one is found in a case menu&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 5];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 2&lt;br /&gt;
|Enter Drenched Bluff for Spoink’s mission &#039;&#039;(if you failed previously)&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;D02P11A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a0701.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|This one is in a case menu, same scene as above&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 6];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 2&lt;br /&gt;
|You find Spoink’s missing pearl at the end of Drenched Bluff&lt;br /&gt;
|&#039;&#039;&#039;D02P31A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a0801.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|This one is in a case menu, probably relating to the &#039;&#039;&#039;demo version&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[3, 7];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 2&lt;br /&gt;
|You find Spoink’s missing pearl at the end of Drenched Bluff&lt;br /&gt;
|&#039;&#039;&#039;D02P31A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a0801.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|This one is in a case menu, probably relating to the &#039;&#039;&#039;demo version&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 2&lt;br /&gt;
|Going to bed after your first successful job mission (also the end of chapter 2)&lt;br /&gt;
|&#039;&#039;&#039;G01P07C&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m02a1003.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1896&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1607&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 401&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Main 3&#039;&#039;&#039;&lt;br /&gt;
----(under “Others”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M3 Outlaw Notice Board&#039;&#039;&#039;&lt;br /&gt;
----(under “Dialogue Check”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK-M03-01B&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Chapter 3&lt;br /&gt;
|Chatot notices you wandering the day after your first mission (about to learn about the Outlaw Notice Board)&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m03a0101.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1615&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 406&#039;&#039;&lt;br /&gt;
|(under “Others”)&lt;br /&gt;
&#039;&#039;&#039;Not That Way&#039;&#039;&#039;&lt;br /&gt;
----(under “Dialogue Check”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK-M03-02&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 2];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 3&lt;br /&gt;
|Meeting Marill and Azurill for the first time at Kecleon Market&lt;br /&gt;
|&#039;&#039;&#039;T01P02A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m03a0301.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1623&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 411&#039;&#039;&lt;br /&gt;
|(under “Others”)&lt;br /&gt;
&#039;&#039;&#039;M3 Drowzee&#039;&#039;&#039;&lt;br /&gt;
----(under “Dialogue Check”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK-M03-03&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 3];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 3&lt;br /&gt;
|Meeting Drowzee for the first time&lt;br /&gt;
|&#039;&#039;&#039;T01P01A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m03a0401.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1631&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 416&#039;&#039;&lt;br /&gt;
|(under “Others”)&lt;br /&gt;
&#039;&#039;&#039;M3 Truth&#039;&#039;&#039;&lt;br /&gt;
----(under “Dialogue Check”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK-M03-04&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 4];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 3&lt;br /&gt;
|Bidoof is about to help you pick your first outlaw job&lt;br /&gt;
|&#039;&#039;&#039;G01P03A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m03a0502.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;D01P11A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;dus08.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 5];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 3&lt;br /&gt;
|About to enter Mt. Bristle to save Azurill from Drowzee&lt;br /&gt;
|&#039;&#039;&#039;D03P11A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m03a0601.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 421&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M03-06&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 6];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 3&lt;br /&gt;
|Drowzee reveals that it was all a trick to Azurill (pre-boss fight)&lt;br /&gt;
|&#039;&#039;&#039;D03P41A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m03a0801.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|For whatever reason, this particular variable appears twice in the same script (at the start of the scene and then right after the boss fight screen wipe effect)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[4, 7];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 3&lt;br /&gt;
|Drowzee is defeated and you rescue Azurill&lt;br /&gt;
|&#039;&#039;&#039;D03P41A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m03a1001.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 426&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M03-08&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|Requires you to do &#039;&#039;&#039;3+ missions&#039;&#039;&#039; and &amp;lt;code&amp;gt;scn[4, 7];&amp;lt;/code&amp;gt; &lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2283&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2160&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Main 4&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Chapter 4&lt;br /&gt;
|Loudred calls you over to do sentry duty for the first time&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m04a0101.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 2];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 4&lt;br /&gt;
|Triggers as the hero and partner are crawling to the sentry post&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m04a0106.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 3];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 4&lt;br /&gt;
|You have just completed sentry duty for the first time, and are about to hear your results&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m04a0201.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 4];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 4&lt;br /&gt;
|Triggers just after you receive the results if you failed sentry duty&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
m04a0201.ssb&lt;br /&gt;
|Only triggers if you failed sentry duty&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 5];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 4&lt;br /&gt;
|Triggers after you’ve seen the cutscene where your team and Loudred go without dinner, which only happens if you failed sentry duty&lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_M04_02_03&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 3242&#039;&#039;&lt;br /&gt;
|&#039;&#039;Only triggers if  &amp;lt;code&amp;gt;scn[5, 4];&amp;lt;/code&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Appears in a switch case&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 431&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK-M04-03&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 6];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 4&lt;br /&gt;
|Requires you to do &#039;&#039;&#039;2+ missions&#039;&#039;&#039; and &amp;lt;code&amp;gt;scn[5, 5];&amp;lt;/code&amp;gt; &lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2314&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 7];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 4&lt;br /&gt;
|Requires you to &#039;&#039;&#039;“do 0+ missions”&#039;&#039;&#039; and &amp;lt;code&amp;gt;scn[5, 6];&amp;lt;/code&amp;gt; &lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2325&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;happylappy&#039;&#039;&#039;&#039;&#039; suspects that this, and others like it, are just counting the number of days that pass&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[5, 8];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 4&lt;br /&gt;
|Requires you to &#039;&#039;&#039;“do 0+ missions”&#039;&#039;&#039; and &amp;lt;code&amp;gt;scn[5, 7];&amp;lt;/code&amp;gt; &lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under&lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2336&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[6, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Chapter 5&lt;br /&gt;
|Requires you to &#039;&#039;&#039;“do 0+ missions”&#039;&#039;&#039; and&amp;lt;code&amp;gt;scn[5, 8];&amp;lt;/code&amp;gt; &lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under &lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2347&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2165&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Main 5&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[6, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 5&lt;br /&gt;
|Morning address where Chatot announces that Treeshroud Forest’s Time Gear has been stolen&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m05a0101.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 436&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M05-02&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[6, 2];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 5&lt;br /&gt;
|Triggers after you tell Chatot you understand the details of your mission to investigate Waterfall Cave&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m05a0203.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[6, 3];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 5&lt;br /&gt;
|Chimecho Assembly opens&lt;br /&gt;
|&#039;&#039;&#039;G01P03A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m00p0101.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[6, 4];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 5&lt;br /&gt;
|The hero and partner discover the stairs to Spinda’s shop for the first time (“opening soon!”)&lt;br /&gt;
|&#039;&#039;&#039;P01P01A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;s30a0101.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[6, 5];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 5&lt;br /&gt;
|Triggers when you enter Waterfall Cave for the first time&lt;br /&gt;
|&#039;&#039;&#039;D04P12A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m05a0304.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 441&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M05-04&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[6, 6];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 5&lt;br /&gt;
|Reaching the bottom of Waterfall Cave&lt;br /&gt;
|&#039;&#039;&#039;D04P31A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m05a0601.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[7, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 5&lt;br /&gt;
|After dinner, Wigglytuff tells your team about the upcoming expedition&lt;br /&gt;
|&#039;&#039;&#039;G01P05C&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m05a0911.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2170&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Main 6&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[7, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
!Chapter 6&lt;br /&gt;
|During the morning address, Chatot talks to everyone about the expedition&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m06a0101.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 446&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M06-02&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[7, 2];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|About to encounter Koffing and Zubat at the job boards&lt;br /&gt;
|&#039;&#039;&#039;G01P03A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m06a0201.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 451&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M06-03&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[7, 3];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Opening cutscene for Spinda’s Café&lt;br /&gt;
|&#039;&#039;&#039;P01P01A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;s30a0201.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 456&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M06-035&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[7, 4];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Loudred calls the hero and partner over for sentry duty (again)&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m06a0401.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[7, 5];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Diglett has something else he has to do, and needs your team to do sentry duty again&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m06a0401.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;m06a0403.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|Triggers twice for whatever reason. The first time is at the start of the scene where Diglett asks for your help again, and the second time is after you confirm to Loudred that you understand what you need to do (i.e. right before the sentry duty minigame starts)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[7, 6];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Chatot has just announced that Team Skull will be living at the guild until the expedition&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m06a0501.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 461&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M06-05&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Requires &amp;lt;code&amp;gt;scn[7, 6];&amp;lt;/code&amp;gt;&lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under &lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2431&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2175&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Main 7&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Chatot asks your team to go find Perfect Apples at Apple Woods&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m07a0301.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 466&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M07-02&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 2];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Entering Apple Woods for the first time&lt;br /&gt;
|&#039;&#039;&#039;D05P11A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m07a0601.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 471&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M07-04&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 3];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch, 6&lt;br /&gt;
|Reaching the end of Apple Woods and encountering Team Skul&lt;br /&gt;
|&#039;&#039;&#039;D05P31A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m07a0701.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 4];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|The other guild apprentices sneak in some food for the hero and partner&lt;br /&gt;
|&#039;&#039;&#039;G01P07A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m07a1302.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 476&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M07-06&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 5];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Project P is introduced to the player for the first time upon entering the crossroads&lt;br /&gt;
|&#039;&#039;&#039;P01P01A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;s30a0301.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 481&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M07-065&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 6];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Seems to be triggered upon re-entering the crossroads after having seen the Project P cutscene (i.e., having &amp;lt;code&amp;gt;scn[8, 5];&amp;lt;/code&amp;gt;)&lt;br /&gt;
|&#039;&#039;&#039;G01P01A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;enter02.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
----&#039;&#039;&#039;P01P02A&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;enter02.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
----&#039;&#039;&#039;P01P04A&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;enter01.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
----&#039;&#039;&#039;T01P01A&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;enter01.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|This value can be triggered by four different enter scripts that all connect to the crossroads&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 488&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M07-067&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 7];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Requires you to do &#039;&#039;&#039;1+ missions&#039;&#039;&#039; and &amp;lt;code&amp;gt;scn[8, 6];&amp;lt;/code&amp;gt; &lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under &lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2358&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 493&#039;&#039;&lt;br /&gt;
|(under “Dialogue Check”)&lt;br /&gt;
&#039;&#039;&#039;TALK-M07-08&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 8];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Requires you to do &#039;&#039;&#039;sentry duty&#039;&#039;&#039; and have&amp;lt;code&amp;gt;scn[8, 7];&amp;lt;/code&amp;gt;&lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under &lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2370&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[8, 9];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Requires you to “&#039;&#039;&#039;do 0+ missions”&#039;&#039;&#039; and &amp;lt;code&amp;gt;scn[8, 8];&amp;lt;/code&amp;gt;&lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under &lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2381&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[9, 0];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Requires you to &#039;&#039;&#039;“do 0+ missions”&#039;&#039;&#039; and &amp;lt;code&amp;gt;scn[8, 9];&amp;lt;/code&amp;gt; &lt;br /&gt;
|Found in &#039;&#039;&#039;unionall&#039;&#039;&#039; under &lt;br /&gt;
&amp;lt;code&amp;gt;EVENT_HA_YU_KI&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2392&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 2180&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Main 8&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;$SCENARIO_MAIN = &#039;&#039;&#039;scn[9, 1];&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|Ch. 6&lt;br /&gt;
|Announcement of the expedition members during the morning address&lt;br /&gt;
|&#039;&#039;&#039;G01P04A&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;m08a0301.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;S02P01A&#039;&#039;&#039; (debug)&lt;br /&gt;
&amp;lt;code&amp;gt;m00a01a.ssb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1639&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 1646&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;amp;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;~ line 498&#039;&#039;&lt;br /&gt;
|(under “Others”)&lt;br /&gt;
&#039;&#039;&#039;M8 Ready for the Expedition?&#039;&#039;&#039; &lt;br /&gt;
----(under “Others”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M8 First Time to Craggy Coast&#039;&#039;&#039;&lt;br /&gt;
----(under “Dialogue Check”)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TALK-M08-02&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Extra_Overlay_Areas&amp;diff=1113</id>
		<title>Extra Overlay Areas</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Extra_Overlay_Areas&amp;diff=1113"/>
		<updated>2025-07-26T19:56:21Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Center table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page keeps track of the areas inside overlay_0036.bin (the extra overlay added by the [[ExtraSpace]] patch) that have been assigned to ASM patches.&lt;br /&gt;
&lt;br /&gt;
If you want to make an ASM patch that needs extra space, you can request an area in the overlay by asking [[User:Frostbyte|Frostbyte]]. Make sure to know how much space you will need beforehand. Also please add a .area directive that includes the start and end address of your area after it’s assigned so you don’t accidentally overflow it (&amp;lt;code&amp;gt;.area endAddress - startAddress&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
You can request the space assigned to your patch to be increased as long as there’s some free space after its section. If there’s not enough space before the next entry begins, you will have to request a new area and add the new extra code there.&lt;br /&gt;
&lt;br /&gt;
An area that has already been assigned can never be unassigned nor reassigned, even if it’s no longer needed by the hack that requested it. This rule is needed since some people might have an old version of a patch that still needs that area.&lt;br /&gt;
{| class=&amp;quot;wikitable center&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Area (inclusive - exclusive)&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Patch&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|0x0 - 0x4&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Magic number 0xBAADF00D (little-endian)&lt;br /&gt;
|-&lt;br /&gt;
|0x4 - 0x10&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Reserved&lt;br /&gt;
|-&lt;br /&gt;
|0x10 - 0x480&lt;br /&gt;
|CompleteTeamControl&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x500 - 0x62C&lt;br /&gt;
|MoveShortcuts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x700 - 0x744&lt;br /&gt;
|HeroFaintKick&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x780 - 0x814&lt;br /&gt;
|FixMemorySoftlock&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x830 - 0x878&lt;br /&gt;
|DynamicBossesEverywhere&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x8B0 - 0x9B0&lt;br /&gt;
|RevampEggStarters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xA00 - 0xA30&lt;br /&gt;
|PitfallTrapTweak&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xA70 - 0xAEC&lt;br /&gt;
|BoldText&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xB20 - 0xB7C&lt;br /&gt;
|ChangeTextSound&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xBC0 - 0xC10&lt;br /&gt;
|AntiSoftlock&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xC40 - 0xCC0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Static init address array&#039;&#039;&#039;: 32 pointers to functions that will be called when the overlay is loaded. Null pointers are skipped.&lt;br /&gt;
&lt;br /&gt;
Other projects that use this overlay and need to perform some sort of initialization should add a pointer to their init function on the first empty slot in this array.&lt;br /&gt;
|-&lt;br /&gt;
|0xD00 - 0xD80&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Static init ID array&#039;&#039;&#039;: 32 integers used to identify which project is making use of each of the 32 entries in the static init address array. Each project should have an unique ID. 0 if an entry is unused.&lt;br /&gt;
&lt;br /&gt;
Projects must check these IDs to ensure they don’t overwrite an entry from another project. They must also make sure to remove their old entries (for example, if the location of the project’s init function changes) so the game doesn’t jump to outdated / invalid addresses.&lt;br /&gt;
|-&lt;br /&gt;
|0xE00 - 0x1120&lt;br /&gt;
|PushAllies&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x11A0 - 0x12F0&lt;br /&gt;
|BetterEnemyEvolution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1380 - 0x13B8&lt;br /&gt;
|NoWeatherStop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x13F0 - 0x1400&lt;br /&gt;
|UnusedDungeonChance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1420 - 0x17BC&lt;br /&gt;
|FixMemorySoftlock&lt;br /&gt;
|&amp;gt;= v2.0&lt;br /&gt;
|-&lt;br /&gt;
|0x1840 - 0x1888&lt;br /&gt;
|MoreSamplesAndPresets&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18B0 - 0x18E0&lt;br /&gt;
|AddKeyCheck&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18F0 - 0x1958&lt;br /&gt;
|DisplayScriptVariable&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1970 - 0x1A2C&lt;br /&gt;
|ChangePortraitMidText&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1A60 - 0x1B60&lt;br /&gt;
|MoreAudioMemory&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1B70 - 0x1B90&lt;br /&gt;
|TeamStatsPain&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1BA0 - 0x1BF4&lt;br /&gt;
|FixNo$GbaSaves&lt;br /&gt;
|&amp;gt;= v1.0&lt;br /&gt;
|-&lt;br /&gt;
|0x30F70 - 0x38F80&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Common area&#039;&#039;&#039;: Anyone can use this space however they want without having to request an area. Useful if you don’t care about compatibility with other patches that might use this space. For example, this can be used if you need some space for a patch that is only going to be used in a certain ROM hack.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=List_of_Opcodes&amp;diff=1093</id>
		<title>List of Opcodes</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=List_of_Opcodes&amp;diff=1093"/>
		<updated>2025-07-09T11:03:28Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Document BranchVariation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The scripting engine used in Explorers of Sky has different opcodes. [[ExplorerScript]] translates most of them literally, preserving the same parameters and functionality. However, some opcodes are translated to [[ExplorerScript]] constructs, such as if statements.&lt;br /&gt;
&lt;br /&gt;
This article documents the different opcodes, their purpose and parameters. The purpose of unkX parameters is unknown.&lt;br /&gt;
&lt;br /&gt;
== What is an opcode? ==&lt;br /&gt;
An opcode is an instruction to the machine (it tells the machine to &#039;do&#039; something). In modern programming, it would be most similar to a [https://en.wikipedia.org/wiki/Function_(computer_programming) function]. For a more technical description, see [https://en.wikipedia.org/wiki/Opcode here].&lt;br /&gt;
&lt;br /&gt;
== Types of parameters ==&lt;br /&gt;
* uint: An unsigned integer (a number without decimals). It cannot be negative. It is possible that in the game&#039;s code, there are only signed integers and no unsigned integers, but not enough research has been done on the matter. For the most part, it shouldn&#039;t matter.&lt;br /&gt;
* sint: A signed integer (a number without decimals). It can be either positive or negative.&lt;br /&gt;
* bitfield: A bitfield is uint where each bits (0 or 1) are treated independantly. They are used to store multiple binary (boolean) values efficiently. Opcodes that use it usually come in the &amp;lt;code&amp;gt;Set&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; variant. The &amp;lt;code&amp;gt;Set&amp;lt;/code&amp;gt; variant define to true the values which are 1 in the input bitfield (while leaving the others untouched), and &amp;lt;code&amp;gt;Reset&amp;lt;/code&amp;gt; define to false the values which are 1 in the input bitfield (while also leaving the others untouched).&lt;br /&gt;
* String: Text (i.e dialogue). There should always be a quotation mark (&amp;quot;) at the beginning and end.&lt;br /&gt;
* ConstString: Same as String.&lt;br /&gt;
* Routine: Any of the 701 coroutines from [[Unionall]]. Always begins with &amp;quot;CORO_&amp;quot;&lt;br /&gt;
* Entity: An actor, performer. (not an object!)&lt;br /&gt;
* Object: An object in a scene. (not an actor or perfomer!)&lt;br /&gt;
* Level: Any level from the [[Script Engine|Level List]]. Will always begin with &amp;quot;LEVEL_&amp;quot;.&lt;br /&gt;
* Bgm: Any music in the game. Will always begin with &amp;quot;BGM_&amp;quot;. (example: BGM_CRAGGY_COAST)&lt;br /&gt;
* PositionMark: A position. Will be written as &amp;quot;Position&amp;lt;&#039;MarkName&#039;, x, y&amp;gt;&amp;quot;. Once a position mark is written in a script, SkyTemple will show an option to place it visually in the scene.&lt;br /&gt;
* Face: A portrait expression. Will always begin with &amp;quot;FACE_&amp;quot;. (examples: FACE_NORMAL, FACE_HAPPY, FACE_PAIN)&lt;br /&gt;
* FaceMode: A portrait position. Will always begin with &amp;quot;FACE_MODE_&amp;quot;.&lt;br /&gt;
* Direction: A direction for an entity to move in or turn to. Will always begin with &amp;quot;DIR_&amp;quot;. (examples: DIR_UP, DIR_RIGHT)&lt;br /&gt;
* ProcessSpecial: One of the games special processes. Can be referred to by its number, or name.&lt;br /&gt;
* Effect: A graphical effect.&lt;br /&gt;
* GameVar: Any of the game&#039;s [[List of Script Variables|Script Variables]]. Will always begin with &amp;quot;$&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Relevant Opcodes ==&lt;br /&gt;
These opcodes can be directly called from ExplorerScript.&lt;br /&gt;
&lt;br /&gt;
=== 0x0 - Null ===&lt;br /&gt;
Does nothing.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x1 - back_ChangeGround ===&lt;br /&gt;
Sets the Map Background from a Level without changing the chunks from the currently loaded Map Background. Entities such as actors, objects, and performers will not be deleted when this opcode is executed. &lt;br /&gt;
&lt;br /&gt;
This has very few uses in the game—a notable use is how Wigglytuff&#039;s Chamber has its door open, as seen via LEVEL_G01P04A and LEVEL_G01P04A2. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Level&lt;br /&gt;
|level_id&lt;br /&gt;
|An entry in the Level List. This opcode will pull from the Level&#039;s Map Background.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x2 - back_SetBackEffect ===&lt;br /&gt;
Performs various effects related to the currently loaded Animation Palettes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|effect&lt;br /&gt;
|&lt;br /&gt;
# The default state of the Animation Palette.&lt;br /&gt;
# Plays the Animation Palette in a loop.&lt;br /&gt;
# Plays the Animation Palette once.&lt;br /&gt;
# Freezes the Animation Palette at its current frame.&lt;br /&gt;
# Resumes the Animation Palette.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x3 - back_SetBackScrollOffset ===&lt;br /&gt;
Shifts the background by a certain number of pixels, without affecting entities such as actors, objects, or performers. Backgrounds used with this opcode will display a &amp;quot;loop&amp;quot; effect, i.e., it has the appearance of scrolling forever.&lt;br /&gt;
&lt;br /&gt;
This opcode seems to only work for only a few Levels, such as LEVEL_P13P01A, LEVEL_S13P06A, and LEVEL_V03P11A.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|offset0&lt;br /&gt;
|The number of pixels to shift either:&lt;br /&gt;
&lt;br /&gt;
* The Map Background&#039;s Layer 1 and Layer 2 X-axis.&lt;br /&gt;
* The Map Background&#039;s Layer 1 X-axis.&lt;br /&gt;
&lt;br /&gt;
Which one the game performs for a given Level is hardcoded.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|offset1&lt;br /&gt;
|The number of pixels to shift either:&lt;br /&gt;
&lt;br /&gt;
* The Map Background&#039;s Layer 1 and Layer 2 Y-axis.&lt;br /&gt;
* The Map Background&#039;s Layer 2 X-axis.&lt;br /&gt;
&lt;br /&gt;
Which one the game performs for a given Level is hardcoded.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x4 - back_SetBackScrollSpeed ===&lt;br /&gt;
Continuously scrolls the background at a certain speed, without affecting entities such as actors, objects, or performers. Backgrounds used with this opcode will display a &amp;quot;loop&amp;quot; effect, i.e., it has the appearance of scrolling forever.&lt;br /&gt;
&lt;br /&gt;
This opcode seems to only work for only a few Levels, such as LEVEL_P13P01A, LEVEL_S13P06A, and LEVEL_V03P11A.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint16&lt;br /&gt;
|speed0&lt;br /&gt;
|The speed to scroll either:&lt;br /&gt;
&lt;br /&gt;
* The Map Background&#039;s Layer 1 and Layer 2 X-axis.&lt;br /&gt;
* The Map Background&#039;s Layer 1 X-axis.&lt;br /&gt;
&lt;br /&gt;
Which one the game performs for a given Level seems to be hardcoded.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint16&lt;br /&gt;
|speed1&lt;br /&gt;
|The speed to scroll either:&lt;br /&gt;
&lt;br /&gt;
* The Map Background&#039;s Layer 1 and Layer 2 Y-axis.&lt;br /&gt;
* The Map Background&#039;s Layer 2 X-axis.&lt;br /&gt;
&lt;br /&gt;
Which one the game performs for a given Level seems to be hardcoded.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x5 - back_SetBanner ===&lt;br /&gt;
Displays broken text using the &amp;lt;code&amp;gt;FONT/banner.bin:FONT/b_pal.bin&amp;lt;/code&amp;gt; font, editable in the Misc. Graphics tab of SkyTemple. This opcode will delete any actors, objects, and performers that are currently loaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|chapter_number&lt;br /&gt;
|The chapter number displayed for the banner. A value of -1 will be &amp;quot;Final Chapter&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x6 - back_SetBanner2 ===&lt;br /&gt;
Displays text using the &amp;lt;code&amp;gt;FONT/banner.bin:FONT/b_pal.bin&amp;lt;/code&amp;gt; font, editable in the Misc. Graphics tab of SkyTemple. This opcode is typically used for chapter introductions, which includes chapter text and a subtitle displayed over a Map Background. This opcode will delete any actors, objects, and performers that are currently loaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Level&lt;br /&gt;
|level&lt;br /&gt;
|An entry in the Level List. This opcode will pull from the Level&#039;s Map Background.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Currently unknown. Typically, the game uses 0 for this parameter, but it seems to have no effect.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|x&lt;br /&gt;
|The pixel position the camera will center the Map Background on its X-axis.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|y&lt;br /&gt;
|The pixel position the camera will center the Map Background on its Y-axis.&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|sint&lt;br /&gt;
|chapter_number&lt;br /&gt;
|The chapter number displayed for the banner. A value of -1 will be &amp;quot;Final Chapter&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|String&lt;br /&gt;
|title&lt;br /&gt;
|The title of the chapter, e.g., &amp;quot;A Storm At Sea&amp;quot; for Chapter 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x7 - back_SetEffect ===&lt;br /&gt;
Performs various effects related to the current Map Background&#039;s layers across a certain number of frames.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|effect&lt;br /&gt;
|&lt;br /&gt;
* Transitions from Layer 2 to Layer 1.&lt;br /&gt;
* Fades in Layer 1 from total darkness.&lt;br /&gt;
* Transitions from Layer 2 to Layer 1.&lt;br /&gt;
* Fades in Layer 1 from total darkness.&lt;br /&gt;
* Transitions from Layer 1 to Layer 2.&lt;br /&gt;
* Fades out Layer 1 to total darkness.&lt;br /&gt;
* Merges Layer 1 onto Layer 2, but fades in Layer 1 from total darkness.&lt;br /&gt;
* Fades in Layer 1 from total darkness.&lt;br /&gt;
* Merges Layer onto Layer 2, but fades out Layer 1 to total darkness.&lt;br /&gt;
* Fades out Layer 1 to total darkness.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to play a given effect.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
=== 0x8 - back_SetDungeonBanner ===&lt;br /&gt;
Displays a specific string using the &amp;lt;code&amp;gt;FONT/banner.bin:FONT/b_pal.bin&amp;lt;/code&amp;gt; font, editable in the Misc. Graphics tab of SkyTemple. The text chosen is defined in Dungeons tab as a dungeon&#039;s &amp;lt;code&amp;gt;back_SetDungeonBanner&amp;lt;/code&amp;gt; string. This opcode will delete any actors, objects, and performers that are currently loaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|dungeon_id&lt;br /&gt;
|The ID of a dungeon, as listed in the Dungeons tab of SkyTemple.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Currently unknown. Does not seem to affect much.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x9 - back_SetGround ===&lt;br /&gt;
Sets the Map Background from a Level. Upon using this opcode, the variable &amp;lt;code&amp;gt;$GROUND_MAP&amp;lt;/code&amp;gt; will be updated to match the ID of the chosen Level. This opcode will delete any actors, objects, and performers that are currently loaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Level&lt;br /&gt;
|level_id&lt;br /&gt;
|An entry in the Level List. This opcode will pull from the Level&#039;s Map Background.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xa - back_SetSpecialEpisodeBanner ===&lt;br /&gt;
Displays text using the &amp;lt;code&amp;gt;FONT/banner.bin:FONT/b_pal.bin&amp;lt;/code&amp;gt; font, editable in the Misc. Graphics tab of SkyTemple. This opcode is used for Special Episodes 1-3. This opcode plays a short animation of a green line shooting across the screen, followed by text scrolling across the screen horizontally from opposite directions. This opcode will delete any actors, objects, and performers that are currently loaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|episode_number&lt;br /&gt;
|The episode number displayed for the banner. A value of -1 will be &amp;quot;Final Chapter&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|String&lt;br /&gt;
|title&lt;br /&gt;
|The title of the episode, e.g., &amp;quot;Bidoof&#039;s Wish&amp;quot; for Special Episode 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xb - back_SetSpecialEpisodeBanner2 ===&lt;br /&gt;
Displays text using the &amp;lt;code&amp;gt;FONT/banner_c.bin:FONT/b_pal_r.bin&amp;lt;/code&amp;gt; font, editable in the Misc. Graphics tab of SkyTemple. This opcode is only used for Special Episode 4. This opcode features an elaborate animation featuring hearts and sparkles, along with text scrolling across the screen horizontally from opposite directions. This opcode will delete any actors, objects, and performers that are currently loaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|episode_number&lt;br /&gt;
|The episode number displayed for the banner. A value of -1 will be &amp;quot;Final Chapter&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|String&lt;br /&gt;
|title&lt;br /&gt;
|The title of the episode, e.g., &amp;quot;Bidoof&#039;s Wish&amp;quot; for Special Episode 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xc - back_SetSpecialEpisodeBanner3 ===&lt;br /&gt;
Displays text using the &amp;lt;code&amp;gt;FONT/banner.bin:FONT/b_pal.bin&amp;lt;/code&amp;gt; font, editable in the Misc. Graphics tab of SkyTemple. This opcode is only used for Special Episode 5. This opcode features no animation, but the end result is similar to the opcode &amp;lt;code&amp;gt;back_SetSpecialEpisodeBanner&amp;lt;/code&amp;gt;. This opcode will delete any actors, objects, and performers that are currently loaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|episode_number&lt;br /&gt;
|The episode number displayed for the banner. A value of -1 will be &amp;quot;Final Chapter&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|String&lt;br /&gt;
|title&lt;br /&gt;
|The title of the episode, e.g., &amp;quot;Bidoof&#039;s Wish&amp;quot; for Special Episode 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xd - back_SetTitleBanner ===&lt;br /&gt;
Displays user-defined text using the &amp;lt;code&amp;gt;FONT/banner.bin:FONT/b_pal.bin&amp;lt;/code&amp;gt; font, editable in the Misc. Graphics tab of SkyTemple. This opcode will delete any actors, objects, and performers that are currently loaded.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|y&lt;br /&gt;
|The Y-axis pixel position of the title.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|String&lt;br /&gt;
|title&lt;br /&gt;
|The title displayed on the Touch Screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xe - back_SetWeather ===&lt;br /&gt;
Displays a weather effect that overlays the current Map Background.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|weather_id&lt;br /&gt;
|Values of 0 and below mean no weather effect is to be displayed.&lt;br /&gt;
&lt;br /&gt;
# Dark, unmoving clouds.&lt;br /&gt;
# Dark, unmoving clouds.&lt;br /&gt;
# Clouds.&lt;br /&gt;
# No weather.&lt;br /&gt;
# Clouds.&lt;br /&gt;
# Unknown; seems to either softlock the game or drastically change the current Map Background.&lt;br /&gt;
# Fog.&lt;br /&gt;
# No weather.&lt;br /&gt;
# Unknown; does not seem to have a visible effect, but it loads something into memory.&lt;br /&gt;
# Unknown; seems to either softlock the game or drastically change the current Map Background.&lt;br /&gt;
# Purple smog.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xf - back_SetWeatherEffect ===&lt;br /&gt;
Currently unknown. The only values this opcode accepts seems to be 1, 2, and 3. Its only known use is in V00P02/m01a04a.ssb, which is a test script used by the developers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x10 - back_SetWeatherScrollOffset ===&lt;br /&gt;
Currently unknown. This opcode is not used in the base game.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x11 - back_SetWeatherScrollSpeed ===&lt;br /&gt;
Currently unknown. This opcode is not used in the base game.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x12 - back2_SetBackEffect ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;back_SetBackEffect&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|effect_id&lt;br /&gt;
|&lt;br /&gt;
# The default state of the Animation Palette.&lt;br /&gt;
# Plays the Animation Palette in a loop.&lt;br /&gt;
# Plays the Animation Palette once.&lt;br /&gt;
# Freezes the Animation Palette at its current frame.&lt;br /&gt;
# Resumes the Animation Palette.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x13 - back2_SetBackScrollOffset ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;back_SetBackScrollOffset&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|offset0&lt;br /&gt;
|The number of pixels to shift either:&lt;br /&gt;
&lt;br /&gt;
* The Map Background&#039;s Layer 1 and Layer 2 X-axis.&lt;br /&gt;
* The Map Background&#039;s Layer 1 X-axis.&lt;br /&gt;
&lt;br /&gt;
Which one the game performs for a given Level seems to be hardcoded.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|offset1&lt;br /&gt;
|The number of pixels to shift either:&lt;br /&gt;
&lt;br /&gt;
* The Map Background&#039;s Layer 1 and Layer 2 Y-axis.&lt;br /&gt;
* The Map Background&#039;s Layer 2 X-axis.&lt;br /&gt;
&lt;br /&gt;
Which one the game performs for a given Level seems to be hardcoded.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x14 - back2_SetBackScrollSpeed ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;back_SetBackScrollSpeed&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|speed0&lt;br /&gt;
|The speed to scroll either:&lt;br /&gt;
&lt;br /&gt;
* The Map Background&#039;s Layer 1 and Layer 2 X-axis.&lt;br /&gt;
* The Map Background&#039;s Layer 1 X-axis.&lt;br /&gt;
&lt;br /&gt;
Which one the game performs for a given Level seems to be hardcoded.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|speed1&lt;br /&gt;
|The speed to scroll either:&lt;br /&gt;
&lt;br /&gt;
* The Map Background&#039;s Layer 1 and Layer 2 Y-axis.&lt;br /&gt;
* The Map Background&#039;s Layer 2 X-axis.&lt;br /&gt;
&lt;br /&gt;
Which one the game performs for a given Level seems to be hardcoded.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x15 - back2_SetData ===&lt;br /&gt;
Currently unknown. This opcode is not used in the base game.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x16 - back2_SetEffect ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;back_SetEffect&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|effect&lt;br /&gt;
|&lt;br /&gt;
* Transitions from Layer 2 to Layer 1.&lt;br /&gt;
* Fades in Layer 1 from total darkness.&lt;br /&gt;
* Transitions from Layer 2 to Layer 1.&lt;br /&gt;
* Fades in Layer 1 from total darkness.&lt;br /&gt;
* Transitions from Layer 1 to Layer 2.&lt;br /&gt;
* Fades out Layer 1 to total darkness.&lt;br /&gt;
* Merges Layer 1 onto Layer 2, but fades in Layer 1 from total darkness.&lt;br /&gt;
* Fades in Layer 1 from total darkness.&lt;br /&gt;
* Merges Layer onto Layer 2, but fades out Layer 1 to total darkness.&lt;br /&gt;
* Fades out Layer 1 to total darkness.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to play a given effect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
=== 0x17 - back2_SetGround ===&lt;br /&gt;
Mostly the same as &amp;lt;code&amp;gt;back_SetGround&amp;lt;/code&amp;gt;, but for the Top Screen. This opcode only works if &amp;lt;code&amp;gt;back2_SetMode(4);&amp;lt;/code&amp;gt; is used prior to this opcode.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Level&lt;br /&gt;
|level_id&lt;br /&gt;
|An entry in the Level List. This opcode will pull from the Level&#039;s Map Background.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x18 - back2_SetMode ===&lt;br /&gt;
Determines a hardcoded status of the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|mode&lt;br /&gt;
|A value of 0 is no mode. A negative value seems to set the Top Screen to the overworld&#039;s current Top Screen setting.&lt;br /&gt;
&lt;br /&gt;
# Fades out the Top Screen.&lt;br /&gt;
# Team Stats.&lt;br /&gt;
# The Map Background S01P01A with the hero idling on a World Map Marker.&lt;br /&gt;
# Allows for the Top Screen to display a Map Background from a Level using the &amp;lt;code&amp;gt;back2_SetGround&amp;lt;/code&amp;gt; opcode.&lt;br /&gt;
# Splits the Map Background used in the Level defined by &amp;lt;code&amp;gt;back_SetGround&amp;lt;/code&amp;gt; equally between the Top and Touch Screen.&lt;br /&gt;
#Splits the Map Background used in the Level defined by &amp;lt;code&amp;gt;back_SetGround&amp;lt;/code&amp;gt; between the Top and Touch Screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x19 - back2_SetSpecialActing ===&lt;br /&gt;
Currently unknown.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x1a - back2_SetWeather ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;back_SetWeather&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|weather_id&lt;br /&gt;
|Values of 0 and below mean no weather effect is to be displayed.&lt;br /&gt;
&lt;br /&gt;
# Dark, unmoving clouds.&lt;br /&gt;
# Dark, unmoving clouds.&lt;br /&gt;
# Clouds.&lt;br /&gt;
# No weather.&lt;br /&gt;
# Clouds.&lt;br /&gt;
# Unknown; seems to either softlock the game or drastically change the current Map Background.&lt;br /&gt;
# Fog.&lt;br /&gt;
# No weather.&lt;br /&gt;
# Unknown; does not seem to have a visible effect, but it loads something into memory.&lt;br /&gt;
# Unknown; seems to either softlock the game or drastically change the current Map Background.&lt;br /&gt;
# Purple smog.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x1b - back2_SetWeatherEffect ===&lt;br /&gt;
Currently unknown. Potentially has similar functionality as &amp;lt;code&amp;gt;back_SetWeatherEffect&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x1c - back2_SetWeatherScrollOffset ===&lt;br /&gt;
Currently unknown. Potentially has similar functionality as &amp;lt;code&amp;gt;back_SetWeatherScrollOffset&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x1d - back2_SetWeatherScrollSpeed ===&lt;br /&gt;
Currently unknown. Potentially has similar functionality as &amp;lt;code&amp;gt;back_SetWeatherScrollSpeed&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x1e - bgm_FadeOut ===&lt;br /&gt;
Fades out the BGM that is currently playing over a certain period of time on the first BGM track.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to fade out and silence a given BGM.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x1f - bgm_Play ===&lt;br /&gt;
Instantly plays a BGM on the first BGM track.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Bgm&lt;br /&gt;
|bgm_id&lt;br /&gt;
|A music track defined in SOUND/BGM of the ROM.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x20 - bgm_PlayFadeIn ===&lt;br /&gt;
Starts playing a BGM over a certain period of time and at a certain volume on the first BGM track.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Bgm&lt;br /&gt;
|bgm_id&lt;br /&gt;
|A music track defined in SOUND/BGM of the ROM.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to fade in the BGM.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|volume&lt;br /&gt;
|The volume that the BGM will play at. It has a maximum of 256 and a minimum of 0.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x21 - bgm_Stop ===&lt;br /&gt;
Instantly stops the BGM that is currently playing on the first BGM track.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x22 - bgm_ChangeVolume ===&lt;br /&gt;
Changes the volume of the BGM that is currently playing on the first BGM track.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the BGM&#039;s volume.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|volume&lt;br /&gt;
|The volume that the BGM will play at. It has a maximum of 256 and a minimum of 0.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x23 - bgm2_FadeOut ===&lt;br /&gt;
Fades out the BGM that is currently playing over a certain period of time on the second BGM track.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to fade out and silence a given BGM.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x24 - bgm2_Play ===&lt;br /&gt;
Instantly plays a BGM on the second BGM track.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Bgm&lt;br /&gt;
|bgm_id&lt;br /&gt;
|A music track defined in SOUND/BGM of the ROM.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x25 - bgm2_PlayFadeIn ===&lt;br /&gt;
Starts playing a BGM over a certain period of time and at a certain volume on the second BGM track.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Bgm&lt;br /&gt;
|bgm_id&lt;br /&gt;
|A music track defined in SOUND/BGM of the ROM.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to fade in the BGM.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|volume&lt;br /&gt;
|The volume that the BGM will play at. It has a maximum of 256 and a minimum of 0.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x26 - bgm2_Stop ===&lt;br /&gt;
Instantly stops the BGM that is currently playing on the second BGM track.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x27 - bgm2_ChangeVolume ===&lt;br /&gt;
Changes the volume of the BGM that is currently playing on the second BGM track.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames to change the BGM&#039;s volume.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|volume&lt;br /&gt;
|The volume that the BGM will play at. It has a maximum of 256 and a minimum of 0.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x38 - CallCommon ===&lt;br /&gt;
Jumps to the specified Unionall Coroutine, runs its code, and returns to the line of code in which this opcode was used (only if &amp;lt;code&amp;gt;return;&amp;lt;/code&amp;gt; was used in the Coroutine). This opcode can be used in any script, no matter the type (Common, Enter, Acting, or Sub).&lt;br /&gt;
&lt;br /&gt;
If used in the context of an actor/object/performer, this should not be used in with-statements.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Routine&lt;br /&gt;
|coro_id&lt;br /&gt;
|One of the 701 possible Unionall Coroutines.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x39 - camera_Move2Default ===&lt;br /&gt;
Moves the camera toward an active Type 1 actor (e.g., ACTOR_PLAYER) without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x3a - camera_Move2MyPosition ===&lt;br /&gt;
Moves the camera toward a specific entity&#039;s position (i.e., an actor, object, or performer) without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x3b - camera_Move2Myself ===&lt;br /&gt;
Moves the camera toward a specific entity (i.e., an actor, object, or performer) without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x3c - camera_Move2PositionMark ===&lt;br /&gt;
Moves the camera to one or more Position Marks without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|The number of parameters to read from this opcode.&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x3d - camera_Move2PositionMark ===&lt;br /&gt;
Moves the camera to a Position Mark without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x3e - camera_Move3Default ===&lt;br /&gt;
Moves the camera toward an active Type 1 actor (e.g., ACTOR_PLAYER) in a rapid, strange motion.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Supposedly movement speed based off of similar opcodes, but does not seem to affect much.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x3f - camera_Move3MyPosition ===&lt;br /&gt;
Moves the camera toward a specific entity&#039;s position (i.e., an actor, object, or performer) in a rapid, strange motion.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Supposedly movement speed based off of similar opcodes, but does not seem to affect much.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x40 - camera_Move3Myself ===&lt;br /&gt;
Moves the camera toward a specific entity (i.e., an actor, object, or performer) in a rapid, strange motion.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Supposedly movement speed based off of similar opcodes, but does not seem to affect much.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x41 - camera_Move3PositionMark ===&lt;br /&gt;
Moves the camera to one or more Position Marks in a rapid, strange motion.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|The number of parameters to read from this opcode.&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x42 - camera_Move3PositionMark ===&lt;br /&gt;
Moves the camera to a Position Mark without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Supposedly movement speed based off of similar opcodes, but does not seem to affect much.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x43 - camera_MoveDefault ===&lt;br /&gt;
Moves the camera toward an active Type 1 actor (e.g., ACTOR_PLAYER) while restricting movement by eight angles—as if movement was performed using the D-Pad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x44 - camera_MoveMyPosition ===&lt;br /&gt;
Moves the camera toward a specific entity&#039;s position (i.e., an actor, object, or performer) while restricting movement by eight angles—as if movement was performed using the D-Pad.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x45 - camera_MoveMyself ===&lt;br /&gt;
Moves the camera toward a specific entity (i.e., an actor, object, or performer) while restricting movement by eight angles—as if movement was performed using the D-Pad.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x46 - camera_MovePositionMark ===&lt;br /&gt;
Moves the camera to one or more Position Marks while restricting movement by eight angles—as if movement was performed using the D-Pad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|The number of parameters to read from this opcode.&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x47 - camera_MovePositionMark ===&lt;br /&gt;
Moves the camera to a Position Mark while restricting movement by eight angles—as if movement was performed using the D-Pad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x48 - camera_SetDefault ===&lt;br /&gt;
Instantly sets the camera to a Type 1 actor (e.g., ACTOR_PLAYER).&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x49 - camera_SetEffect ===&lt;br /&gt;
Continuously shakes the camera at specified intensities. Entities will be affected by the camera shaking, but not textboxes and portraits. The camera will continue to shake even if it is moved using another opcode.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|mode&lt;br /&gt;
|Values of 0 or 3+ mean the camera will not shake.&lt;br /&gt;
&lt;br /&gt;
# Erratic, jerky shaking.&lt;br /&gt;
# Subdued, smoother shaking.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|intensity&lt;br /&gt;
|The intensity of the shake. Higher values will result in a more intense shake.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a slower speed.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x4a - camera_SetMyPosition ===&lt;br /&gt;
Instantly sets the camera toward a specific entity&#039;s position (i.e., an actor, object, or performer).&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x4b - camera_SetMyself ===&lt;br /&gt;
Instantly sets the camera to a specific entity (i.e., an actor, object, or performer). Once performed, the camera will now follow the entity wherever it moves.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x4c - camera_SetPositionMark ===&lt;br /&gt;
Instantly sets the camera to a Position Mark.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x4d - camera2_Move2Default ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_Move2Default&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x4e - camera2_Move2MyPosition ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_Move2MyPosition&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x4f - camera2_Move2Myself ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_Move2Myself&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x50 - camera2_Move2PositionMark ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_Move2PositionMark&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|The number of parameters to read from this opcode.&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x51 - camera2_Move2PositionMark ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_Move2PositionMark&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x52 - camera2_Move3Default ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_Move3Default&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Supposedly movement speed based off of similar opcodes, but does not seem to affect much.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x53 - camera2_Move3MyPosition ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_Move3MyPosition&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Supposedly movement speed based off of similar opcodes, but does not seem to affect much.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x54 - camera2_Move3Myself ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_Move3Myself&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Supposedly movement speed based off of similar opcodes, but does not seem to affect much.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x55 - camera2_Move3PositionMark ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_Move3PositionMark&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|The number of parameters to read from this opcode.&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x56 - camera2_Move3PositionMark ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_Move3PositionMark&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Supposedly movement speed based off of similar opcodes, but does not seem to affect much.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x57 - camera2_MoveDefault ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_MoveDefault&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x58 - camera2_MoveMyPosition ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_MoveMyPosition&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x59 - camera2_MoveMyself ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_MoveMyself&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x5a - camera2_MovePositionMark ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_MovePositionMark&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|The number of parameters to read from this opcode.&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x5b - camera2_MovePositionMark ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_MovePositionMark&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x5c - camera2_SetDefault ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_SetDefault&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x5d - camera2_SetEffect ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_SetEffect&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|mode&lt;br /&gt;
|Values of 0 or 3+ mean the camera will not shake.&lt;br /&gt;
&lt;br /&gt;
# Erratic, jerky shaking.&lt;br /&gt;
# Subdued, smoother shaking.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|intensity&lt;br /&gt;
|The intensity of the shake. Higher values will result in a more intense shake.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a slower speed.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x5e - camera2_SetMyPosition ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_SetMyPosition&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x5f - camera2_SetMyself ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_SetMyself&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x60 - camera2_SetPositionMark ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;camera_SetPositionMark&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x61 - CancelCut ===&lt;br /&gt;
Reverses the effects of the opcode &amp;lt;code&amp;gt;CancelRecoverCommon&amp;lt;/code&amp;gt;, i.e., disallows the game from reloading Unionall at a Coroutine by pressing the Start button.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x62 - CancelRecoverCommon ===&lt;br /&gt;
Allows reloading Unionall at a specified Coroutine by pressing the Start button. This can be done in a cutscene and the overworld.&lt;br /&gt;
&lt;br /&gt;
Once the Start button is pressed, the game will stop the current script, fade out the entire screen, and reload Unionall and begin running code at the specified Coroutine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Routine&lt;br /&gt;
|coro_id&lt;br /&gt;
|One of the 701 possible Unionall Coroutines.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x6a - debug_Assert ===&lt;br /&gt;
Does nothing in the final game.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x6b - debug_Print ===&lt;br /&gt;
Does nothing in the final game.&lt;br /&gt;
&lt;br /&gt;
If the script is running using SkyTemple&#039;s debugger and the &amp;quot;Script Debug&amp;quot; checkbox is ticked, the specified string will be printed to the Debug Log.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|ConstString&lt;br /&gt;
|txt&lt;br /&gt;
|A string to be printed to the Debug Log.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x6c - debug_PrintFlag ===&lt;br /&gt;
Does nothing in the final game.&lt;br /&gt;
&lt;br /&gt;
If the script is running using SkyTemple&#039;s debugger and the &amp;quot;Script Debug&amp;quot; checkbox is ticked, the specified string will be printed to the Debug Log, along with the value of the specified script variable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|One of the 115 possible script variables. Indexed variables are not encouraged to use, since the Debug Log will only read from the first index.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|ConstString&lt;br /&gt;
|txt&lt;br /&gt;
|A string to be printed to the Debug Log.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x6d - debug_PrintScenario ===&lt;br /&gt;
If the script is running using SkyTemple&#039;s debugger and the &amp;quot;Script Debug&amp;quot; checkbox is ticked, the specified string will be printed to the Debug Log, along with two indices of the specified script variable.&lt;br /&gt;
&lt;br /&gt;
This opcode&#039;s Debug Log implementation currently seems broken, as it prints the first index of the specified variable twice.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|One of the 115 possible script variables. A two-indexed variable (e.g., &amp;lt;code&amp;gt;$SCENARIO_MAIN&amp;lt;/code&amp;gt;) is encouraged to use.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|ConstString&lt;br /&gt;
|txt&lt;br /&gt;
|A string to be printed to the Debug Log.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x6f - Destroy ===&lt;br /&gt;
Instantly removes an active entity (i.e., an actor, object, or performer) from memory.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
&lt;br /&gt;
=== 0x71 - EndAnimation ===&lt;br /&gt;
Stops an actor or object&#039;s looping animation once it reaches the end of its animation frames.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x72 - ExecuteActing ===&lt;br /&gt;
Currently unknown.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x73 - ExecuteCommon ===&lt;br /&gt;
Jumps to a Unionall Coroutine, runs its code, and returns to the line in which this opcode was called. This opcode should be called if the specified Coroutine ends with &amp;lt;code&amp;gt;hold;&amp;lt;/code&amp;gt;. Typically, the base game uses this command with Coroutines whose names end with &amp;quot;FUNC_SERIES&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Routine&lt;br /&gt;
|coro_id&lt;br /&gt;
|One of the 701 possible Unionall Coroutines.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x81 - Flash ===&lt;br /&gt;
Zeroes-out the return address used by the &amp;lt;code&amp;gt;Return&amp;lt;/code&amp;gt; opcode. This opcode is not used in the base game.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x83 - item_GetVariable ===&lt;br /&gt;
Saves the value in a specific item slot (set by &amp;lt;code&amp;gt;item_Set&amp;lt;/code&amp;gt;) to a script variable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|slot&lt;br /&gt;
|An item slot used by many &amp;lt;code&amp;gt;item_&amp;lt;/code&amp;gt; opcodes.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|One of the indexed variables. Non-indexed values causes the IndexError.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x84 - item_Set ===&lt;br /&gt;
Sets an item into an item slot, which can be used by other various &amp;lt;code&amp;gt;item_&amp;lt;/code&amp;gt; opcodes.&lt;br /&gt;
&lt;br /&gt;
Items in slot 0 may also be added to the player&#039;s bag and storage with hardcoded menus, such as &amp;lt;code&amp;gt;message_Menu(MENU_GIVE_ITEM);&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;message_Menu(MENU_GIVE_ITEM2);&amp;lt;/code&amp;gt;, respectively. Additionally, the text tag &amp;lt;code&amp;gt;[s_item:X]&amp;lt;/code&amp;gt; will display the item&#039;s name, where X is the item slot number.&lt;br /&gt;
&lt;br /&gt;
Item slots 0-3 are safe to use, but item slots 4 and beyond will begin to overwrite other memory!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|slot&lt;br /&gt;
|An item slot used by many &amp;lt;code&amp;gt;item_&amp;lt;/code&amp;gt; opcodes.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|item_id&lt;br /&gt;
|The ID of the item, where all are listed in the Items tab of SkyTemple. &lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|item_stack&lt;br /&gt;
|The stack count of an item, if it belongs to a Thrown category. Treasure Boxes will also use this as the item earned when opening the box at Xatu&#039;s Appraisal.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x85 - item_SetTableData ===&lt;br /&gt;
Sets a random item from predefined tables into an item slot, which can be used by other various &amp;lt;code&amp;gt;item_&amp;lt;/code&amp;gt; opcodes. This opcode is used mainly in Spinda&#039;s Cafe, for redeeming a random Recycle Shop prize and for receiving items from Treasure Town NPCs after giving them Sky Gifts.&lt;br /&gt;
&lt;br /&gt;
Items in slot 0 may also be added to the player&#039;s bag and storage with hardcoded menus, such as &amp;lt;code&amp;gt;message_Menu(MENU_GIVE_ITEM);&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;message_Menu(MENU_GIVE_ITEM2);&amp;lt;/code&amp;gt;, respectively. Additionally, the text tag &amp;lt;code&amp;gt;[s_item:X]&amp;lt;/code&amp;gt; will display the item&#039;s name, where X is the item slot number.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|slot&lt;br /&gt;
|An item slot used by many &amp;lt;code&amp;gt;item_&amp;lt;/code&amp;gt; opcodes.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|table_ID&lt;br /&gt;
|Some item tables related to Spinda&#039;s Cafe.&lt;br /&gt;
|}&lt;br /&gt;
The table IDs themselves are as follows. Values above 15 are currently unknown and untested. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!#&lt;br /&gt;
!Description&lt;br /&gt;
!#&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Sky Gift Item Pool&lt;br /&gt;
|8&lt;br /&gt;
|Silver Ticket Win Pool&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Numel &amp;quot;Give&amp;quot; Item Pool&lt;br /&gt;
|9&lt;br /&gt;
|Silver Ticket Big Win Pool&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Numel &amp;quot;Recieve&amp;quot; Item Pool&lt;br /&gt;
|10&lt;br /&gt;
|Gold Ticket Loss Pool&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Happiny Lost Item Pool&lt;br /&gt;
|11&lt;br /&gt;
|Gold Ticket Win Pool&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Prize Ticket Loss Pool&lt;br /&gt;
|12&lt;br /&gt;
|Gold Ticket Big Win Pool&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Prize Ticket Win Pool&lt;br /&gt;
|13&lt;br /&gt;
|Prism Ticket Loss Pool&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Prize Ticket Big Win Pool&lt;br /&gt;
|14&lt;br /&gt;
|Prism Ticket Win Pool&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Silver Ticket Loss Pool&lt;br /&gt;
|15&lt;br /&gt;
|Prism Ticket Big Win Pool&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x86 - item_SetVariable ===&lt;br /&gt;
Saves the value of a script variable to an item slot. Items in slot 0 may also be added to the player&#039;s bag and storage with hardcoded menus, such as &amp;lt;code&amp;gt;message_Menu(MENU_GIVE_ITEM);&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;message_Menu(MENU_GIVE_ITEM2);&amp;lt;/code&amp;gt;, respectively. Additionally, the text tag &amp;lt;code&amp;gt;[s_item:X]&amp;lt;/code&amp;gt; will display the item&#039;s name, where X is the item slot number.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|slot&lt;br /&gt;
|An item slot used by many &amp;lt;code&amp;gt;item_&amp;lt;/code&amp;gt; opcodes.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|One of the 115 possible script variables.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x88 - JumpCommon ===&lt;br /&gt;
Jumps to the specified Unionall Coroutine and runs its code, without returning to the line in which this opcode was first used. This opcode can be used in any script, no matter the type (Common, Enter, Acting, or Sub), but is mostly used by the base game in Unionall.&lt;br /&gt;
&lt;br /&gt;
If attempting to execute a Unionall Coroutine from inside an Enter, Acting, or Sub script to play Acting scripts, use &amp;lt;code&amp;gt;supervision_ExecuteCommon&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Routine&lt;br /&gt;
|coro_id&lt;br /&gt;
|One of the 701 possible Unionall Coroutines.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x8a - LoadPosition ===&lt;br /&gt;
Sets various attributes of an entity (i.e., an actor, object, or performer) to the values of all indexed &amp;lt;code&amp;gt;$POSITION_&amp;lt;/code&amp;gt; script variables. These include changing the entity&#039;s X and Y coordinates, height, and direction.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|index&lt;br /&gt;
|Index used by all &amp;lt;code&amp;gt;$POSITION_&amp;lt;/code&amp;gt; script variables, ranged from 0-2 (inclusive).&lt;br /&gt;
|}&lt;br /&gt;
=== 0x8b - Lock ===&lt;br /&gt;
Suspends the current routine until the opcode &amp;lt;code&amp;gt;Unlock&amp;lt;/code&amp;gt; is called with the same &#039;&#039;lock_id&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|lock_id&lt;br /&gt;
|The ID of a Lock, ranged from 0-19 (inclusive).&lt;br /&gt;
|}&lt;br /&gt;
=== 0x8c - main_EnterAdventure ===&lt;br /&gt;
Performs various functions related to entering a dungeon using the crossroads menu.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|mode&lt;br /&gt;
|Most modes are not known, but:&lt;br /&gt;
&lt;br /&gt;
* 32767 opens the dungeon selection menu.&lt;br /&gt;
* 251 stops the current script to reload Unionall starting from the Coroutine CORO_MOVE_WORLD_MAP.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x8d - main_EnterDungeon ===&lt;br /&gt;
Attempts to exit ground mode and begins dungeon mode at a specific dungeon.&lt;br /&gt;
&lt;br /&gt;
If attempting to run this opcode before selecting any option from the Top Menu, the game will not enter any dungeon and instead attempt to load a DEMO Unionall coroutine or the Top Menu.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|dungeon_id&lt;br /&gt;
|The dungeon ID to enter, which are all listed in the Dungeons tab of SkyTemple. A value of -1 actually enters dungeon mode—it is insufficient to use this opcode a single time to enter a specific dungeon.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to fade out the screens.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x8e - main_EnterGround ===&lt;br /&gt;
Stops the current script to reload Unionall starting from the Coroutine CORO_EVENT_DIVIDE. This opcode also updates the following script variables:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;$GROUND_ENTER&amp;lt;/code&amp;gt;: This opcode&#039;s &#039;&#039;level_id_enter&#039;&#039; parameter.&lt;br /&gt;
* &amp;lt;code&amp;gt;$GROUND_ENTER_LINK&amp;lt;/code&amp;gt;: Set to 0.&lt;br /&gt;
* &amp;lt;code&amp;gt;$GROUND_GETOUT&amp;lt;/code&amp;gt;: The value of &amp;lt;code&amp;gt;$GROUND_ENTER&amp;lt;/code&amp;gt; prior to using this opcode.&lt;br /&gt;
* &amp;lt;code&amp;gt;$GROUND_MAP&amp;lt;/code&amp;gt;: The Level ID used to display the Map Background.&lt;br /&gt;
* &amp;lt;code&amp;gt;$GROUND_PLACE&amp;lt;/code&amp;gt;: The World Map Marker ID that determines where the player appears on the Top Screen when selecting &amp;quot;Map and team&amp;quot; in the overworld.&lt;br /&gt;
* &amp;lt;code&amp;gt;$GROUND_START_MODE&amp;lt;/code&amp;gt;: Set to 3.&lt;br /&gt;
&lt;br /&gt;
In the base game, using this opcode allows for transitioning between Levels in the Overworld, as the game will eventually run the &amp;lt;code&amp;gt;supervision_ExecuteEnter&amp;lt;/code&amp;gt; opcode.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Level&lt;br /&gt;
|level_id&lt;br /&gt;
|An entry in the Level List. Ideally, this opcode would load the specified Level&#039;s Enter00 script.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to fade out the screens.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x8f - main_EnterGroundMulti ===&lt;br /&gt;
Stops the current script to reload Unionall starting from the Coroutine CORO_EVENT_DIVIDE. This opcode also updates the following script variables:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;$GROUND_ENTER&amp;lt;/code&amp;gt;: This opcode&#039;s &#039;&#039;level_id_enter&#039;&#039; parameter.&lt;br /&gt;
* &amp;lt;code&amp;gt;$GROUND_ENTER_LINK&amp;lt;/code&amp;gt;: This opcode&#039;s &#039;&#039;level_id_link&#039;&#039; parameter.&lt;br /&gt;
* &amp;lt;code&amp;gt;$GROUND_GETOUT&amp;lt;/code&amp;gt;: The value of &amp;lt;code&amp;gt;$GROUND_ENTER&amp;lt;/code&amp;gt; prior to using this opcode.&lt;br /&gt;
* &amp;lt;code&amp;gt;$GROUND_MAP&amp;lt;/code&amp;gt;: The Level ID used to display the Map Background.&lt;br /&gt;
* &amp;lt;code&amp;gt;$GROUND_PLACE&amp;lt;/code&amp;gt;: The World Map Marker ID that determines where the player appears on the Top Screen when selecting &amp;quot;Map and team&amp;quot; in the overworld.&lt;br /&gt;
* &amp;lt;code&amp;gt;$GROUND_START_MODE&amp;lt;/code&amp;gt;: Set to 3.&lt;br /&gt;
&lt;br /&gt;
In the base game, using this opcode allows for transitioning between Levels in the Overworld, as the game will eventually run the &amp;lt;code&amp;gt;supervision_ExecuteEnter&amp;lt;/code&amp;gt; opcode.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Level&lt;br /&gt;
|level_id_enter&lt;br /&gt;
|An entry in the Level List. Ideally, this opcode would load the specified Level&#039;s Enter00 script.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to fade out the screens.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Level&lt;br /&gt;
|level_id_link&lt;br /&gt;
|An entry in the Level List. Used to update &amp;lt;code&amp;gt;$GROUND_ENTER_LINK&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x90 - main_EnterRescueUser ===&lt;br /&gt;
Exits ground mode and begins dungeon mode while taking an SOS Mail. Dungeon selection seems to be determined by the SOS Mail chosen via &amp;lt;code&amp;gt;message_Menu(MENU_S_O_S_MAIL_PICKER);&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to fade out the screens.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x91 - main_EnterTraining ===&lt;br /&gt;
Performs various functions related to entering a dungeon using Marowak Dojo.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|mode&lt;br /&gt;
|Most modes are not known, but:&lt;br /&gt;
&lt;br /&gt;
* 32767 opens the generic dojo selection menu&lt;br /&gt;
* 251 goes to the Coroutine CORO_GOTO_TRAINING_DUNGEON, which later stops the current script to reload Unionall starting from the Coroutine CORO_ENTER_TRAINING_DUNGEON.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x92 - main_EnterTraining2 ===&lt;br /&gt;
Performs various functions related to entering a dungeon using Marowak Dojo&#039;s Final Maze.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|mode&lt;br /&gt;
|Most modes are not known, but:&lt;br /&gt;
&lt;br /&gt;
* 32767 opens a dojo selection menu that only involves Final Maze.&lt;br /&gt;
* 251 goes to the Coroutine CORO_GOTO_TRAINING_DUNGEON, which later stops the current script to reload Unionall starting from the Coroutine CORO_ENTER_TRAINING_DUNGEON.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x93 - main_SetGround ===&lt;br /&gt;
Updates the following variables&#039; values to be this opcode&#039;s &#039;&#039;level_id&#039;&#039; parameter:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;$GROUND_ENTER&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;$GROUND_GETOUT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Level&lt;br /&gt;
|level_id&lt;br /&gt;
|An entry in the Level List.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x94 - me_Play ===&lt;br /&gt;
Instantly plays a special [[sound effect]] that can seamlessly interrupt any BGM tracks that are currently playing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|me_id&lt;br /&gt;
|A sound effect defined in SOUND/ME of the ROM.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x95 - me_Stop ===&lt;br /&gt;
Instantly stops the currently-playing special [[sound effect]] called with &amp;lt;code&amp;gt;me_Play&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x96 - message_Close ===&lt;br /&gt;
Suspends the current routine and allows for closing an active textbox (and portrait, if active) set by one of the following opcodes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;message_ImitationSound&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_Mail&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_Monologue&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_Notice&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_SpecialTalk&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_Talk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By pressing the A Button, B Button, or tapping the textbox via the Touch Screen. Once the textbox is closed, the current routine resumes.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x97 - message_CloseEnforce ===&lt;br /&gt;
Instantly closes an active textbox (and portrait, if active) once the game finishes displaying a string set by one of the following opcodes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;message_ImitationSound&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_Mail&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_Monologue&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_Notice&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_SpecialTalk&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_Talk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x98 - message_Explanation ===&lt;br /&gt;
Displays the string defined in the &#039;&#039;txt&#039;&#039; parameter centered in the middle of the Touch Screen. The string will appear without any frame defined in &amp;lt;code&amp;gt;FONT/frameX.wte&amp;lt;/code&amp;gt; (as seen in the Misc. Graphics tab of SkyTemple). This opcode does not need &amp;lt;code&amp;gt;message_Close&amp;lt;/code&amp;gt; to suspend the routine.&lt;br /&gt;
&lt;br /&gt;
This opcode does not support displaying a portrait. No sound will emit from the text scrolling.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|String&lt;br /&gt;
|txt&lt;br /&gt;
|Text to be displayed on the Touch Screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x99 - message_FacePositionOffset ===&lt;br /&gt;
Offsets the active portrait in pixels by multiples of 8.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
|The offset to shift the portrait box across the X-axis.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|The offset to shift the portrait box across the Y-axis.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x9a - message_ImitationSound ===&lt;br /&gt;
Displays the string defined in the &#039;&#039;txt&#039;&#039; parameter at the bottom of the Touch Screen. The string will appear surrounded by a player-chosen frame defined in &amp;lt;code&amp;gt;FONT/frameX.wte&amp;lt;/code&amp;gt; (as seen in the Misc. Graphics tab of SkyTemple).&lt;br /&gt;
&lt;br /&gt;
This opcode does not support displaying a portrait. No sound will emit from the text scrolling.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|String&lt;br /&gt;
|txt&lt;br /&gt;
|Text to be displayed on the Touch Screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x9b - message_KeyWait ===&lt;br /&gt;
If an active textbox has finished displaying its string and was created by one of the following opcodes:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;message_ImitationSound&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_Mail&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_Monologue&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_Notice&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_SpecialTalk&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;message_Talk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This opcode suspends the current routine until the A Button, B Button or textbox is pressed (via the Touch Screen). Once done so, the textbox will not close, but the current routine will resume.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x9c - message_Mail ===&lt;br /&gt;
Displays the string defined in the &#039;&#039;txt&#039;&#039; parameter at the bottom of the Touch Screen. The string will appear surrounded by a player-chosen frame defined in &amp;lt;code&amp;gt;FONT/frameX.wte&amp;lt;/code&amp;gt; (as seen in the Misc. Graphics tab of SkyTemple).&lt;br /&gt;
&lt;br /&gt;
This opcode does not support displaying a portrait. No sound will emit from the text scrolling.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|String&lt;br /&gt;
|txt&lt;br /&gt;
|Text to be displayed on the Touch Screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x9d - message_Menu ===&lt;br /&gt;
Executes various hardcoded &amp;quot;menu&amp;quot; functionalities given a certain ID. Some IDs result in an actual menu, while others simply perform a silent task.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Menu&lt;br /&gt;
|menu_id&lt;br /&gt;
|The ID of a menu, the list of which can be seen by typing &amp;lt;code&amp;gt;MENU_&amp;lt;/code&amp;gt; in SkyTemple&#039;s Script Engine Debugger.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x9e - message_Monologue ===&lt;br /&gt;
Displays the string defined in the &#039;&#039;txt&#039;&#039; parameter at the bottom of the Touch Screen. The string will appear surrounded by a player-chosen frame defined in &amp;lt;code&amp;gt;FONT/frameX.wte&amp;lt;/code&amp;gt; (as seen in the Misc. Graphics tab of SkyTemple).&lt;br /&gt;
&lt;br /&gt;
This opcode supports displaying a portrait. No sound will emit from the text scrolling.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|String&lt;br /&gt;
|txt&lt;br /&gt;
|Text to be displayed on the Touch Screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x9f - message_Narration ===&lt;br /&gt;
Fades in the screen and instantly displays the string defined in the &#039;&#039;txt&#039;&#039; parameter centered in the middle of the Touch Screen. The string will appear without any frame defined in &amp;lt;code&amp;gt;FONT/frameX.wte&amp;lt;/code&amp;gt; (as seen in the Misc. Graphics tab of SkyTemple). This opcode does not need &amp;lt;code&amp;gt;message_Close&amp;lt;/code&amp;gt; to suspend the routine. Once the routine is resumed (by pressing the A Button, B Button, or text via the Touch Screen), the screen will fade out, including the string.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to fade in/out the Touch Screen.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|String&lt;br /&gt;
|txt&lt;br /&gt;
|Text to be displayed on the Touch Screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xa0 - message_Notice ===&lt;br /&gt;
Instantly displays the string defined in the &#039;&#039;txt&#039;&#039; parameter at the bottom of the Touch Screen. The string will appear surrounded by a player-chosen frame defined in &amp;lt;code&amp;gt;FONT/frameX.wte&amp;lt;/code&amp;gt; (as seen in the Misc. Graphics tab of SkyTemple).&lt;br /&gt;
&lt;br /&gt;
This opcode does not support displaying a portrait.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|String&lt;br /&gt;
|txt&lt;br /&gt;
|Text to be displayed on the Touch Screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xa1 - message_EmptyActor ===&lt;br /&gt;
Disallows a portrait from appearing alongside a textbox, along with disallowing a name to appear in the textbox if &amp;lt;code&amp;gt;message_Talk&amp;lt;/code&amp;gt; follows this opcode.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0xa2 - message_ResetActor ===&lt;br /&gt;
Disallows a portrait from appearing alongside a textbox, along with setting a speech bubble (the text tag [M:T1]) to the start of next script string if &amp;lt;code&amp;gt;message_Talk&amp;lt;/code&amp;gt; follows this opcode.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0xa3 - message_SetActor ===&lt;br /&gt;
Sets the specified actor&#039;s name to the start of the next script string if &amp;lt;code&amp;gt;message_Talk&amp;lt;/code&amp;gt; follows this opcode.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Entity&lt;br /&gt;
|actor_id&lt;br /&gt;
|An entry in the Actor List.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xa4 - message_SetFace ===&lt;br /&gt;
Sets the specified actor&#039;s name to the start of the next script string if &amp;lt;code&amp;gt;message_Talk&amp;lt;/code&amp;gt; follows this opcode. Will also display a portrait of the actor&#039;s species at a specified position if &amp;lt;code&amp;gt;message_Talk&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;message_Monologue&amp;lt;/code&amp;gt; follow this opcode.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Entity&lt;br /&gt;
|actor_id&lt;br /&gt;
|An entry in the Actor List.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Face&lt;br /&gt;
|face_id&lt;br /&gt;
|The ID of a portrait, the list of which can be seen by typing FACE_ in SkyTemple&#039;s Script Engine Debugger.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|FaceMode&lt;br /&gt;
|face_mode&lt;br /&gt;
|The position of a portrait, the list of which can be seen by typing &amp;lt;code&amp;gt;FACE_POS_&amp;lt;/code&amp;gt; in SkyTemple&#039;s Script Engine Debugger.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xa5 - message_SetFaceEmpty ===&lt;br /&gt;
Displays a portrait of the actor&#039;s species at a specified position if &amp;lt;code&amp;gt;message_Talk&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;message_Monologue&amp;lt;/code&amp;gt; follow this opcode.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Entity&lt;br /&gt;
|actor_id&lt;br /&gt;
|An entry in the Actor List.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Face&lt;br /&gt;
|face_id&lt;br /&gt;
|The ID of a portrait, the list of which can be seen by typing FACE_ in SkyTemple&#039;s Script Engine Debugger.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|FaceMode&lt;br /&gt;
|face_mode&lt;br /&gt;
|The position of a portrait, the list of which can be seen by typing &amp;lt;code&amp;gt;FACE_POS_&amp;lt;/code&amp;gt; in SkyTemple&#039;s Script Engine Debugger.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xa6 - message_SetFaceOnly ===&lt;br /&gt;
Sets a speech bubble (the text tag [M:T1]) to the start of the next script string if &amp;lt;code&amp;gt;message_Talk&amp;lt;/code&amp;gt; follows this opcode. Will also display a portrait of the actor&#039;s species at a specified position if &amp;lt;code&amp;gt;message_Talk&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;message_Monologue&amp;lt;/code&amp;gt; follow this opcode.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Entity&lt;br /&gt;
|actor_id&lt;br /&gt;
|An entry in the Actor List.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Face&lt;br /&gt;
|face_id&lt;br /&gt;
|The ID of a portrait, the list of which can be seen by typing FACE_ in SkyTemple&#039;s Script Engine Debugger.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|FaceMode&lt;br /&gt;
|face_mode&lt;br /&gt;
|The position of a portrait, the list of which can be seen by typing &amp;lt;code&amp;gt;FACE_POS_&amp;lt;/code&amp;gt; in SkyTemple&#039;s Script Engine Debugger.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xa7 - message_SetFacePosition ===&lt;br /&gt;
Re-positions an actor&#039;s portrait.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|FaceMode&lt;br /&gt;
|face_mode&lt;br /&gt;
|The position of a portrait, the list of which can be seen by typing &amp;lt;code&amp;gt;FACE_POS_&amp;lt;/code&amp;gt; in SkyTemple&#039;s Script Engine Debugger.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xa8 - message_SetWaitMode ===&lt;br /&gt;
Makes strings displayed with a &amp;lt;code&amp;gt;message_&amp;lt;/code&amp;gt; opcode auto-scroll. For both parameters, a value of -1 means the auto-scroll will stop.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|duration0&lt;br /&gt;
|Sets the frame count for a textbox auto-advancing, once the end of the string has been displayed and the following opcode is &amp;lt;code&amp;gt;message_KeyWait();&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|duration1&lt;br /&gt;
|Sets the frame count for text tags such as [K] auto-advancing.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xa9 - message_SpecialTalk ===&lt;br /&gt;
Displays a random Text String based off of the actor ACTOR_TALK_SUB&#039;s Talk Group.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|category&lt;br /&gt;
|A category of Text String.&lt;br /&gt;
&lt;br /&gt;
* 0 seems to use Text Strings while not in a dungeon (e.g., teammates waiting at Spinda&#039;s Cafe).&lt;br /&gt;
* 1 seems to be use Text Strings while mid-dungeon (e.g., teammates at Amp Plains).&lt;br /&gt;
|}&lt;br /&gt;
=== 0xae - message_Talk ===&lt;br /&gt;
Displays the string defined in the &#039;&#039;txt&#039;&#039; parameter at the bottom of the Touch Screen. The string will appear surrounded by a player-chosen frame defined in &amp;lt;code&amp;gt;FONT/frameX.wte&amp;lt;/code&amp;gt; (as seen in the Misc. Graphics tab of SkyTemple). &lt;br /&gt;
&lt;br /&gt;
This opcode supports displaying a portrait. The [[sound effect]] 16133 will emit from the each character scrolling in the text.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|String&lt;br /&gt;
|txt&lt;br /&gt;
|Text to be displayed on the Touch Screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xaf - Move2Position ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to a specific pixel position without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|x&lt;br /&gt;
|The pixel position on the X-axis.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|y&lt;br /&gt;
|The pixel position on the Y-axis.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xb0 - Move2PositionLives ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to an actor without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
This opcode must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Entity&lt;br /&gt;
|actor_id&lt;br /&gt;
|An entry in the Actor List.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xb1 - Move2PositionMark ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to one or more Position Marks without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|The number of parameters to read from this opcode.&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0xb2 - Move2PositionMark ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to a Position Mark without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xb3 - Move2PositionOffset ===&lt;br /&gt;
Offsets an entity (i.e., an actor, object, or performer) from its current position across both axes without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|The number of parameters to read from this opcode.&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|sint&lt;br /&gt;
|x, y&lt;br /&gt;
|The pixel offset to shift the entity across the X or Y-axis.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xb4 - Move2PositionOffset ===&lt;br /&gt;
Offsets an entity (i.e., an actor, object, or performer) from its current position across both axes without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
|The pixel offset to shift the entity across the X-axis.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|The pixel offset to shift the entity across the Y-axis.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xb5 - Move2PositionOffsetRandom ===&lt;br /&gt;
Continuously and randomly offsets an entity (i.e., an actor, object, or performer) from its current position across both axes without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
|Determines something about the random pixel value chosen to apply to the X-axis; somewhat unknown.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|Determines something about the random pixel value chosen to apply to the Y-axis; somewhat unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xb6 - Move3Position ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to a specific pixel position in a rapid, strange motion.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|x&lt;br /&gt;
|The pixel position on the X-axis.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|y&lt;br /&gt;
|The pixel position on the Y-axis.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xb7 - Move3PositionLives ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to an actor in a rapid, strange motion.&lt;br /&gt;
&lt;br /&gt;
This opcode must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Entity&lt;br /&gt;
|actor_id&lt;br /&gt;
|An entry in the Actor List.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xb8 - Move3PositionMark ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to a Position Mark in a rapid, strange motion.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|The number of parameters to read from this opcode.&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xb9 - Move3PositionMark ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to a Position Mark in a rapid, strange motion.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xba - Move3PositionOffset ===&lt;br /&gt;
Offsets an entity (i.e., an actor, object, or performer) from its current position across both axes in a rapid, strange motion.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|The number of parameters to read from this opcode.&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|sint&lt;br /&gt;
|x, y&lt;br /&gt;
|The pixel offset to shift the entity across the X or Y-axis.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xbb - Move3PositionOffset ===&lt;br /&gt;
Offsets an entity (i.e., an actor, object, or performer) from its current position across both axes in a rapid, strange motion.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
|The pixel offset to shift the entity across the X-axis.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|The pixel offset to shift the entity across the Y-axis.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xbc - Move3PositionOffsetRandom ===&lt;br /&gt;
Continuously and randomly offsets an entity (i.e., an actor, object, or performer) from its current position across both axes in a rapid, strange motion.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
|Determines something about the random pixel value chosen to apply to the X-axis; somewhat unknown.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|Determines something about the random pixel value chosen to apply to the Y-axis; somewhat unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xbd - MoveDirection ===&lt;br /&gt;
Offsets an entity (i.e., an actor, object, or performer) by a certain number of pixels based on a given direction. Movement is performed while restricting movement by eight angles—as if movement was performed using the D-Pad.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|offset&lt;br /&gt;
|The pixel offset to shift the entity relative to the entity&#039;s direction.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Direction&lt;br /&gt;
|direction&lt;br /&gt;
|The type of direction, the list of which can be seen by typing &amp;lt;code&amp;gt;DIR_&amp;lt;/code&amp;gt; in SkyTemple&#039;s Script Engine Debugger.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xbe - MoveHeight ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to a certain pixel height, displacing it from its shadow. When used, the entity&#039;s animation and direction will not change.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|height&lt;br /&gt;
|The pixel height to set the entity relative to their shadow.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xbf - MovePosition ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to a specific pixel position while restricting movement by eight angles—as if movement was performed using the D-Pad.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|x&lt;br /&gt;
|The pixel position on the X-axis.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|y&lt;br /&gt;
|The pixel position on the Y-axis.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xc0 - MovePositionLives ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to an actor while restricting movement by eight angles—as if movement was performed using the D-Pad.&lt;br /&gt;
&lt;br /&gt;
This opcode must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Entity&lt;br /&gt;
|actor_id&lt;br /&gt;
|An entry in the Actor List.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xc1 - MovePositionLivesTime ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to an actor while restricting movement by eight angles—as if movement was performed using the D-Pad. Movement will end once either the entity reaches the actor or after a certain number of frames have passed—whichever comes first.&lt;br /&gt;
&lt;br /&gt;
This opcode must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Entity&lt;br /&gt;
|actor_id&lt;br /&gt;
|An entry in the Actor List.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to move the entity.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xc2 - MovePositionMark ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to a Position Mark while restricting movement by eight angles—as if movement was performed using the D-Pad.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|The number of parameters to read from this opcode.&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xc3 - MovePositionMark ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to a Position Mark while restricting movement by eight angles—as if movement was performed using the D-Pad.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xc4 - MovePositionMarkTime ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to an Position Mark while restricting movement by eight angles—as if movement was performed using the D-Pad. Movement will end once either the entity reaches the Position Mark or after a certain number of frames have passed—whichever comes first.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to move the entity.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xc5 - MovePositionOffset ===&lt;br /&gt;
Offsets an entity (i.e., an actor, object, or performer) from its current position across both axes while restricting movement by eight angles—as if movement was performed using the D-Pad.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|The number of parameters to read from this opcode.&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|sint&lt;br /&gt;
|x, y&lt;br /&gt;
|The pixel offset to shift the entity across the X or Y-axis.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xc6 - MovePositionOffset ===&lt;br /&gt;
Offsets an entity (i.e., an actor, object, or performer) from its current position across both axes while restricting movement by eight angles—as if movement was performed using the D-Pad.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
|The pixel offset to shift the entity across the X-axis.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|The pixel offset to shift the entity across the Y-axis.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xc7 - MoveSpecial ===&lt;br /&gt;
Currently unknown. Seems to move an entity (i.e., an actor, object, or performer) based on some hardcoded behaviors.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|mode&lt;br /&gt;
|Determines the kind of action.&lt;br /&gt;
&lt;br /&gt;
# Spin and move in a circular motion.&lt;br /&gt;
# Spin and move in a circular motion.&lt;br /&gt;
# Currently unknown.&lt;br /&gt;
# Currently unknown.&lt;br /&gt;
# Currently unknown. Seems to be the most commonly-used value, as a part of the Unionall Coroutine CORO_LIVES_REPLY_NOMRAL.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Currently unknown. Seems to affect how far the entity will move?&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xc8 - MoveTurn ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) based on a certain pattern. Unlike other &amp;lt;code&amp;gt;Move&amp;lt;/code&amp;gt; opcodes, this opcode will make the entity interact with the currently loaded Map Background&#039;s collision (i.e., the entity stops when hitting a wall).&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|distance&lt;br /&gt;
|How far the entity will move. Higher values result in greater distance being covered.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
&lt;br /&gt;
This parameter also seems to affect the distance traveled.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|pattern&lt;br /&gt;
|A hardcoded pattern to move in.&lt;br /&gt;
&lt;br /&gt;
# Moves in a circle clockwise.&lt;br /&gt;
# Moves in a circle counterclockwise.&lt;br /&gt;
# Moves in a square clockwise.&lt;br /&gt;
# Moves in a square counterclockwise.&lt;br /&gt;
# Zig-zags back and forth.&lt;br /&gt;
&lt;br /&gt;
Values 6 and above seem to be variations of random movement.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xca - PauseEffect ===&lt;br /&gt;
Instantly pauses the current graphical effect of an entity (i.e., an actor, object, or performer). The effect will freeze mid-frame.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Effect&lt;br /&gt;
|effect_id&lt;br /&gt;
|A graphical effect to display relative to an entity.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xcc - ProcessSpecial ===&lt;br /&gt;
Executes one of the game&#039;s Special Processes. The return value of a Special Process can be checked by encasing this opcode in a &amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt; statement. A negative return value is not acceptable and will cause the game to suspend indefinitely.&lt;br /&gt;
&lt;br /&gt;
This opcode cannot be used in targeted routines.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|ProcessSpecial&lt;br /&gt;
|process_id&lt;br /&gt;
|One of the game&#039;s Special Processes.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|process_param1&lt;br /&gt;
|The first parameter used by the Special Process.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|sint&lt;br /&gt;
|process_param2&lt;br /&gt;
|The first parameter used by the Special Process.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xcd - PursueTurnLives ===&lt;br /&gt;
Causes an entity (i.e., an actor, object, or performer) to continuously turn toward an actor for a certain number of frames.&lt;br /&gt;
&lt;br /&gt;
This opcode must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to make the entity turn. A value of 0 will make the entity turn forever.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Turning speed. Higher values result in a slower speed.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Entity&lt;br /&gt;
|actor_id&lt;br /&gt;
|The actor to turn toward.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|rotation&lt;br /&gt;
|&lt;br /&gt;
# Clockwise.&lt;br /&gt;
# Counterclockwise.&lt;br /&gt;
&lt;br /&gt;
A value of 10 will make the entity choose the nearest rotation.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xce - PursueTurnLives2 ===&lt;br /&gt;
Causes an entity (i.e., an actor, object, or performer) to continuously turn toward an actor for a certain number of frames.&lt;br /&gt;
&lt;br /&gt;
This opcode must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to make the entity turn. A value of 0 will make the entity turn forever.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Turning speed. Higher values result in a slower speed.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Entity&lt;br /&gt;
|actor_id&lt;br /&gt;
|The actor to turn toward.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|rotation&lt;br /&gt;
|&lt;br /&gt;
# Clockwise.&lt;br /&gt;
# Counterclockwise.&lt;br /&gt;
&lt;br /&gt;
A value of 10 will make the entity choose the nearest rotation.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xcf - ResetAttribute ===&lt;br /&gt;
Currently unknown. Seems to get ignored when parsed in the scripting engine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Currently unknown.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xd0 - ResetFunctionAttribute ===&lt;br /&gt;
Sets certain bits of an entity&#039;s (i.e., an actor, object, or performer) &amp;quot;function&amp;quot; attribute to 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|bitfield&lt;br /&gt;
|function_bitfield&lt;br /&gt;
|Most bits&#039; purposes are unknown. Bit 1 appears to be the bit used for allowing an entity to follow a Type 1 actor, like the actor ACTOR_ATTENDANT1 in the overworld.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xd1 - ResetHitAttribute ===&lt;br /&gt;
Sets certain bits of an entity&#039;s (i.e., an actor, object, or performer) &amp;quot;hit&amp;quot; attribute to 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|bitfield&lt;br /&gt;
|hit_bitfield&lt;br /&gt;
|Most bits&#039; purposes are unknown.&lt;br /&gt;
&lt;br /&gt;
* 2: Entity collision.&lt;br /&gt;
* 6: Talk Script upon collision.&lt;br /&gt;
* 7: Talk Script upon pressing the A Button near the entity.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xd2 - ResetOutputAttribute ===&lt;br /&gt;
Sets certain bits of an entity&#039;s (i.e., an actor, object, or performer) &amp;quot;output&amp;quot; attribute to 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|bitfield&lt;br /&gt;
|output_bitfield&lt;br /&gt;
|&lt;br /&gt;
# Underlay below entities.&lt;br /&gt;
# Overlay above entities.&lt;br /&gt;
# Overlay above the current Map Background&#039;s Layer 2.&lt;br /&gt;
# Overlay above the game&#039;s canvas system, which includes the textbox, portrait, and some &amp;lt;code&amp;gt;screen_&amp;lt;/code&amp;gt; commands that do not end in &amp;lt;code&amp;gt;All&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Flicker.&lt;br /&gt;
# Transparency.&lt;br /&gt;
# Invisibility.&lt;br /&gt;
# Displays shadow.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xd3 - ResetReplyAttribute ===&lt;br /&gt;
Sets certain bits of an entity&#039;s (i.e., an actor, object, or performer) &amp;quot;reply&amp;quot; attribute to 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|bitfield&lt;br /&gt;
|reply_bitfield&lt;br /&gt;
|Most bits&#039; purposes are unknown.&lt;br /&gt;
&lt;br /&gt;
* 1: Talk Script upon collision.&lt;br /&gt;
* 2: Talk Script upon pressing the A Button near the entity.&lt;br /&gt;
* 6: Underlay below entities.&lt;br /&gt;
* 7: Overlay above entities.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xd4 - ResumeEffect ===&lt;br /&gt;
Resumes the current graphical effect of an entity (i.e., an actor, object, or performer) that has been paused with &amp;lt;code&amp;gt;PauseEffect&amp;lt;/code&amp;gt; prior to using this opcode.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Effect&lt;br /&gt;
|effect_id&lt;br /&gt;
|A graphical effect to display relative to an entity.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xd6 - SavePosition ===&lt;br /&gt;
Saves various attributes of an entity (i.e., an actor, object, or performer) to the following script variables:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;$POSITION_X&amp;lt;/code&amp;gt;: The pixel position of the entity on the X-axis multiplied by 256.&lt;br /&gt;
* &amp;lt;code&amp;gt;$POSITION_Y&amp;lt;/code&amp;gt;: The pixel position of the entity on the Y-axis multiplied by 256.&lt;br /&gt;
* &amp;lt;code&amp;gt;$POSITION_HEIGHT&amp;lt;/code&amp;gt;: The pixel height (i.e., displacement of the entity from their shadow) of the entity multiplied by 256.&lt;br /&gt;
* &amp;lt;code&amp;gt;$POSITION_DIRECTION&amp;lt;/code&amp;gt;: The direction the entity is facing.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|index&lt;br /&gt;
|Index used by all &amp;lt;code&amp;gt;$POSITION_&amp;lt;/code&amp;gt; script variables, ranged from 0-2 (inclusive).&lt;br /&gt;
|}&lt;br /&gt;
=== 0xd7 - screen_FadeChange ===&lt;br /&gt;
Changes the brightness of the screen across a certain number of frames. This opcode will not affect:&lt;br /&gt;
&lt;br /&gt;
* Entities who have had their 4th &amp;quot;output&amp;quot; bit set to 1 (e.g., by using &amp;lt;code&amp;gt;SetOutputAttribute(16);&amp;lt;/code&amp;gt; with them).&lt;br /&gt;
* Portraits.&lt;br /&gt;
* Textboxes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and 1 is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Touch Screen&#039;s brightness.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|start_brightness&lt;br /&gt;
|The brightness level the opcode will begin at.&lt;br /&gt;
&lt;br /&gt;
* The minimum brightness is 0, which results in a black screen.&lt;br /&gt;
* The default brightness is 256.&lt;br /&gt;
* The maximum brightness is 512, which results in a white screen.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|end_brightness&lt;br /&gt;
|The brightness level the opcode will end at.&lt;br /&gt;
&lt;br /&gt;
* The minimum brightness is 0, which results in a black screen.&lt;br /&gt;
* The default brightness is 256.&lt;br /&gt;
* The maximum brightness is 512, which results in a white screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xd8 - screen_FadeChangeAll ===&lt;br /&gt;
Changes the brightness of the screen across a certain number of frames. This opcode will affect everything on the Touch Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Touch Screen&#039;s brightness.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|start_brightness&lt;br /&gt;
|The brightness level the opcode will begin at.&lt;br /&gt;
&lt;br /&gt;
* The minimum brightness is 0, which results in a black screen.&lt;br /&gt;
* The default brightness is 256.&lt;br /&gt;
* The maximum brightness is 512, which results in a white screen.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|end_brightness&lt;br /&gt;
|The brightness level the opcode will end at.&lt;br /&gt;
&lt;br /&gt;
* The minimum brightness is 0, which results in a black screen.&lt;br /&gt;
* The default brightness is 256.&lt;br /&gt;
* The maximum brightness is 512, which results in a white screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xd9 - screen_FadeIn ===&lt;br /&gt;
Changes the brightness of the screen to its default state across a certain number of frames. This opcode will not affect:&lt;br /&gt;
&lt;br /&gt;
* Entities who have had their 4th &amp;quot;output&amp;quot; bit set to 1 (e.g., by using &amp;lt;code&amp;gt;SetOutputAttribute(16);&amp;lt;/code&amp;gt; with them).&lt;br /&gt;
* Portraits.&lt;br /&gt;
* Textboxes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Touch Screen&#039;s brightness.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xda - screen_FadeInAll ===&lt;br /&gt;
Changes the brightness of the screen to its default state across a certain number of frames. This opcode will affect everything on the Touch Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Touch Screen&#039;s brightness.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xdb - screen_FadeOut ===&lt;br /&gt;
Changes the brightness of the screen to its minimum (i.e., a black screen) across a certain number of frames. This opcode will not affect:&lt;br /&gt;
&lt;br /&gt;
* Entities who have had their 4th &amp;quot;output&amp;quot; bit set to 1 (e.g., by using &amp;lt;code&amp;gt;SetOutputAttribute(16);&amp;lt;/code&amp;gt; with them).&lt;br /&gt;
* Portraits.&lt;br /&gt;
* Textboxes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Touch Screen&#039;s brightness.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xdc - screen_FadeOutAll ===&lt;br /&gt;
Changes the brightness of the screen to its minimum (i.e., a black screen) across a certain number of frames. This opcode will affect everything on the Touch Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Touch Screen&#039;s brightness.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xdd - screen_FlushChange ===&lt;br /&gt;
Does nothing.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|unk3&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|uint&lt;br /&gt;
|unk4&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|uint&lt;br /&gt;
|unk5&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|uint&lt;br /&gt;
|unk6&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|uint&lt;br /&gt;
|unk7&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0xde - screen_FlushIn ===&lt;br /&gt;
Changes the color of the screen from a specific state (given by the opcode&#039;s parameters, which affect the Touch Screen instantly) to its default state across a certain number of frames. This opcode will affect all entities (i.e., actors, objects, and performers) on the Touch Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Touch Screen&#039;s color.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|mode&lt;br /&gt;
|&lt;br /&gt;
# Completely darkens the Touch Screen.&lt;br /&gt;
# Completely turns the Touch Screen to a certain color.&lt;br /&gt;
# Instantly darkens the Touch Screen?&lt;br /&gt;
# Overlays the Touch Screen with a certain color.&lt;br /&gt;
# Instantly darkens the Touch Screen?&lt;br /&gt;
# Overlays the Touch Screen with hardcoded color bytes: 144, 144, and 255.&lt;br /&gt;
# Instantly darkens the Touch Screen?&lt;br /&gt;
# Overlays the Touch Screen with hardcoded color bytes: 255, 192, and 128.&lt;br /&gt;
# Instantly darkens the Touch Screen?&lt;br /&gt;
# Overlays the Touch Screen with hardcoded color bytes: All 255. The Touch Screen is not turned completely white.&lt;br /&gt;
# Instantly overlays the Touch Screen with hardcoded color bytes: All 255. The Touch Screen is not turned completely white.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|r&lt;br /&gt;
|Unused if &#039;&#039;mode&#039;&#039; is not 2 or 4. Byte used for the color red. Has a minimum of 0 and a maximium of 255.&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|uint&lt;br /&gt;
|g&lt;br /&gt;
|Unused if &#039;&#039;mode&#039;&#039; is not 2 or 4. Byte used for the color green. Has a minimum of 0 and a maximium of 255.&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|uint&lt;br /&gt;
|b&lt;br /&gt;
|Unused if &#039;&#039;mode&#039;&#039; is not 2 or 4. Byte used for the color blue. Has a minimum of 0 and a maximium of 255.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xdf - screen_FlushOut ===&lt;br /&gt;
Changes the color of the screen across a certain number of frames. This opcode will affect all entities (i.e., actors, objects, and performers) on the Touch Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Touch Screen&#039;s color.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|mode&lt;br /&gt;
|&lt;br /&gt;
# Completely darkens the Touch Screen.&lt;br /&gt;
# Completely turns the Touch Screen to a certain color.&lt;br /&gt;
# Instantly darkens the Touch Screen?&lt;br /&gt;
# Overlays the Touch Screen with a certain color.&lt;br /&gt;
# Instantly darkens the Touch Screen?&lt;br /&gt;
# Overlays the Touch Screen with hardcoded color bytes: 144, 144, and 255.&lt;br /&gt;
# Instantly darkens the Touch Screen?&lt;br /&gt;
# Overlays the Touch Screen with hardcoded color bytes: 255, 192, and 128.&lt;br /&gt;
# Instantly darkens the Touch Screen?&lt;br /&gt;
# Overlays the Touch Screen with hardcoded color bytes: All 255. The Touch Screen is not turned completely white.&lt;br /&gt;
# Instantly overlays the Touch Screen with hardcoded color bytes: All 255. The Touch Screen is not turned completely white.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|r&lt;br /&gt;
|Unused if &#039;&#039;mode&#039;&#039; is not 2 or 4. Byte used for the color red. Has a minimum of 0 and a maximium of 255.&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|uint&lt;br /&gt;
|g&lt;br /&gt;
|Unused if &#039;&#039;mode&#039;&#039; is not 2 or 4. Byte used for the color green. Has a minimum of 0 and a maximium of 255.&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|uint&lt;br /&gt;
|b&lt;br /&gt;
|Unused if &#039;&#039;mode&#039;&#039; is not 2 or 4. Byte used for the color blue. Has a minimum of 0 and a maximium of 255.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xe0 - screen_WhiteChange ===&lt;br /&gt;
Changes the brightness of the screen across a certain number of frames. This opcode will not affect:&lt;br /&gt;
&lt;br /&gt;
* Entities who have had their 4th &amp;quot;output&amp;quot; bit set to 1 (e.g., by using &amp;lt;code&amp;gt;SetOutputAttribute(16);&amp;lt;/code&amp;gt; with them).&lt;br /&gt;
* Portraits.&lt;br /&gt;
* Textboxes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and 1 is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Touch Screen&#039;s brightness.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|start_brightness&lt;br /&gt;
|The brightness level the opcode will begin at.&lt;br /&gt;
&lt;br /&gt;
* The minimum brightness is 0, which results in a white screen.&lt;br /&gt;
* The default brightness is 256.&lt;br /&gt;
* The maximum brightness is 512, which results in a black screen.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|end_brightness&lt;br /&gt;
|The brightness level the opcode will end at.&lt;br /&gt;
&lt;br /&gt;
* The minimum brightness is 0, which results in a white screen.&lt;br /&gt;
* The default brightness is 256.&lt;br /&gt;
* The maximum brightness is 512, which results in a black screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xe1 - screen_WhiteChangeAll ===&lt;br /&gt;
Changes the brightness of the screen across a certain number of frames. This opcode will affect everything on the Touch Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Touch Screen&#039;s brightness.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|start_brightness&lt;br /&gt;
|The brightness level the opcode will begin at.&lt;br /&gt;
&lt;br /&gt;
* The minimum brightness is 0, which results in a white screen.&lt;br /&gt;
* The default brightness is 256.&lt;br /&gt;
* The maximum brightness is 512, which results in a black screen.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|end_brightness&lt;br /&gt;
|The brightness level the opcode will end at.&lt;br /&gt;
&lt;br /&gt;
* The minimum brightness is 0, which results in a white screen.&lt;br /&gt;
* The default brightness is 256.&lt;br /&gt;
* The maximum brightness is 512, which results in a black screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xe2 - screen_WhiteIn ===&lt;br /&gt;
Does nothing. Do not be deceived by this opcode&#039;s name: After using &amp;lt;code&amp;gt;screen_WhiteOut&amp;lt;/code&amp;gt;, use &amp;lt;code&amp;gt;screen_FadeIn&amp;lt;/code&amp;gt; to restore the Touch Screen&#039;s brightness level!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xe3 - screen_WhiteInAll ===&lt;br /&gt;
Does nothing. Do not be deceived by this opcode&#039;s name: After using &amp;lt;code&amp;gt;screen_WhiteOutAll&amp;lt;/code&amp;gt;, use &amp;lt;code&amp;gt;screen_FadeInAll&amp;lt;/code&amp;gt; to restore the Touch Screen&#039;s brightness level!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xe4 - screen_WhiteOut ===&lt;br /&gt;
Changes the brightness of the screen to its maximum (i.e., a white screen) across a certain number of frames. This opcode will not affect:&lt;br /&gt;
&lt;br /&gt;
* Entities who have had their 4th &amp;quot;output&amp;quot; bit set to 1 (e.g., by using &amp;lt;code&amp;gt;SetOutputAttribute(16);&amp;lt;/code&amp;gt; with them).&lt;br /&gt;
* Portraits.&lt;br /&gt;
* Textboxes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Touch Screen&#039;s brightness.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xe5 - screen_WhiteOutAll ===&lt;br /&gt;
Changes the brightness of the screen to its maximum (i.e., a white screen) across a certain number of frames. This opcode will affect everything on the Touch Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Touch Screen&#039;s brightness.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xe6 - screen2_FadeChange ===&lt;br /&gt;
Changes the brightness of the screen across a certain number of frames. This opcode will affect everything on the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and 1 is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Top Screen&#039;s brightness.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|start_brightness&lt;br /&gt;
|The brightness level the opcode will begin at.&lt;br /&gt;
&lt;br /&gt;
* The minimum brightness is 0, which results in a black screen.&lt;br /&gt;
* The default brightness is 256.&lt;br /&gt;
* The maximum brightness is 512, which results in a white screen.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|end_brightness&lt;br /&gt;
|The brightness level the opcode will end at.&lt;br /&gt;
&lt;br /&gt;
* The minimum brightness is 0, which results in a black screen.&lt;br /&gt;
* The default brightness is 256.&lt;br /&gt;
* The maximum brightness is 512, which results in a white screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xe7 - screen2_FadeChangeAll ===&lt;br /&gt;
Does nothing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|unk3&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xe8 - screen2_FadeIn ===&lt;br /&gt;
Changes the brightness of the screen to its default state across a certain number of frames. This opcode will affect everything on the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Top Screen&#039;s brightness.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xe9 - screen2_FadeInAll ===&lt;br /&gt;
Does nothing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xea - screen2_FadeOut ===&lt;br /&gt;
Changes the brightness of the screen to its minimum (i.e., a black screen) across a certain number of frames. This opcode will affect everything on the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Top Screen&#039;s brightness.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xeb - screen2_FadeOutAll ===&lt;br /&gt;
Does nothing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xec - screen2_FlushChange ===&lt;br /&gt;
Does nothing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|unk3&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|uint&lt;br /&gt;
|unk4&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|uint&lt;br /&gt;
|unk5&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|uint&lt;br /&gt;
|unk6&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|uint&lt;br /&gt;
|unk7&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xed - screen2_FlushIn ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;screen_FlushIn&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Top Screen&#039;s color.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|mode&lt;br /&gt;
|&lt;br /&gt;
# Completely darkens the Top Screen.&lt;br /&gt;
# Completely turns the Top Screen to a certain color.&lt;br /&gt;
# Instantly darkens the Top Screen?&lt;br /&gt;
# Overlays the Top Screen with a certain color.&lt;br /&gt;
# Instantly darkens the Top Screen?&lt;br /&gt;
# Overlays the Top Screen with hardcoded color bytes: 144, 144, and 255.&lt;br /&gt;
# Instantly darkens the Top Screen?&lt;br /&gt;
# Overlays the Top Screen with hardcoded color bytes: 255, 192, and 128.&lt;br /&gt;
# Instantly darkens the Top Screen?&lt;br /&gt;
# Overlays the Top Screen with hardcoded color bytes: All 255. The Top Screen is not turned completely white.&lt;br /&gt;
# Instantly overlays the Top Screen with hardcoded color bytes: All 255. The Top Screen is not turned completely white.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|r&lt;br /&gt;
|Unused if &#039;&#039;mode&#039;&#039; is not 2 or 4. Byte used for the color red. Has a minimum of 0 and a maximium of 255.&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|uint&lt;br /&gt;
|g&lt;br /&gt;
|Unused if &#039;&#039;mode&#039;&#039; is not 2 or 4. Byte used for the color green. Has a minimum of 0 and a maximium of 255.&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|uint&lt;br /&gt;
|b&lt;br /&gt;
|Unused if &#039;&#039;mode&#039;&#039; is not 2 or 4. Byte used for the color blue. Has a minimum of 0 and a maximium of 255.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xee - screen2_FlushOut ===&lt;br /&gt;
The same as &amp;lt;code&amp;gt;screen_FlushOut&amp;lt;/code&amp;gt;, but for the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Top Screen&#039;s color.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|mode&lt;br /&gt;
|&lt;br /&gt;
# Completely darkens the Top Screen.&lt;br /&gt;
# Completely turns the Top Screen to a certain color.&lt;br /&gt;
# Instantly darkens the Top Screen?&lt;br /&gt;
# Overlays the Top Screen with a certain color.&lt;br /&gt;
# Instantly darkens the Top Screen?&lt;br /&gt;
# Overlays the Top Screen with hardcoded color bytes: 144, 144, and 255.&lt;br /&gt;
# Instantly darkens the Top Screen?&lt;br /&gt;
# Overlays the Top Screen with hardcoded color bytes: 255, 192, and 128.&lt;br /&gt;
# Instantly darkens the Top Screen?&lt;br /&gt;
# Overlays the Top Screen with hardcoded color bytes: All 255. The Top Screen is not turned completely white.&lt;br /&gt;
# Instantly overlays the Top Screen with hardcoded color bytes: All 255. The Top Screen is not turned completely white.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|r&lt;br /&gt;
|Unused if &#039;&#039;mode&#039;&#039; is not 2 or 4. Byte used for the color red. Has a minimum of 0 and a maximium of 255.&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|uint&lt;br /&gt;
|g&lt;br /&gt;
|Unused if &#039;&#039;mode&#039;&#039; is not 2 or 4. Byte used for the color green. Has a minimum of 0 and a maximium of 255.&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|uint&lt;br /&gt;
|b&lt;br /&gt;
|Unused if &#039;&#039;mode&#039;&#039; is not 2 or 4. Byte used for the color blue. Has a minimum of 0 and a maximium of 255.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xef - screen2_WhiteChange ===&lt;br /&gt;
Changes the brightness of the screen across a certain number of frames. This opcode will affect everything on the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Top Screen&#039;s brightness.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|start_brightness&lt;br /&gt;
|The brightness level the opcode will begin at.&lt;br /&gt;
&lt;br /&gt;
* The minimum brightness is 0, which results in a white screen.&lt;br /&gt;
* The default brightness is 256.&lt;br /&gt;
* The maximum brightness is 512, which results in a black screen.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|end_brightness&lt;br /&gt;
|The brightness level the opcode will end at.&lt;br /&gt;
&lt;br /&gt;
* The minimum brightness is 0, which results in a white screen.&lt;br /&gt;
* The default brightness is 256.&lt;br /&gt;
* The maximum brightness is 512, which results in a black screen.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xf0 - screen2_WhiteChangeAll ===&lt;br /&gt;
Does nothing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|unk3&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xf1 - screen2_WhiteIn ===&lt;br /&gt;
Does nothing. Do not be deceived by this opcode&#039;s name: After using &amp;lt;code&amp;gt;screen2_WhiteOut&amp;lt;/code&amp;gt;, use &amp;lt;code&amp;gt;screen2_FadeIn&amp;lt;/code&amp;gt; to restore the Top Screen&#039;s brightness level!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xf2 - screen2_WhiteInAll ===&lt;br /&gt;
Does nothing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xf3 - screen2_WhiteOut ===&lt;br /&gt;
Changes the brightness of the screen to its maximum (i.e., a white screen) across a certain number of frames. This opcode will affect everything on the Top Screen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|suspension_flag&lt;br /&gt;
|Determines whether the script will suspend until this opcode&#039;s operation is complete. 0 is false and anything else is true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the Top Screen&#039;s brightness.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xf4 - screen2_WhiteOutAll ===&lt;br /&gt;
Does nothing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xf5 - se_ChangePan ===&lt;br /&gt;
Changes the panning of the currently-playing [[sound effect]] across a certain number of frames.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|se_id&lt;br /&gt;
|A sound effect defined in SOUND/SE of the ROM. Actually encoded as &amp;lt;code&amp;gt;sound_bank_id &amp;lt;&amp;lt; 8 + sound_id&amp;lt;/code&amp;gt;, but it can also be represented as an integer.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the SE&#039;s panning.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|pan&lt;br /&gt;
|The panning of the SE. This parameter gets recalculated internally as  &amp;lt;code&amp;gt;((&#039;&#039;pan&#039;&#039; * 0x3f + ((&#039;&#039;pan&#039;&#039; * 0x3f &amp;gt;&amp;gt; 7) &amp;gt;&amp;gt; 0x18)) &amp;gt;&amp;gt; 8) + 0x40&amp;lt;/code&amp;gt;, which is eventually split up into two halfwords, then recalculated further into a signed byte.&lt;br /&gt;
What this means is that:&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;pan&#039;&#039; parameter of 260 will result in sound panning only to the right channel.&lt;br /&gt;
* A &#039;&#039;pan&#039;&#039; parameter of 261 will result in sound panning only to the left channel.&lt;br /&gt;
&lt;br /&gt;
More research on this parameter may be needed.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xf6 - se_ChangeVolume ===&lt;br /&gt;
Changes the volume of the currently-playing [[sound effect]] across a certain number of frames.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|se_id&lt;br /&gt;
|A sound effect defined in SOUND/SE of the ROM. Actually encoded as &amp;lt;code&amp;gt;sound_bank_id &amp;lt;&amp;lt; 8 + sound_id&amp;lt;/code&amp;gt;, but it can also be represented as an integer.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to change the SE&#039;s volume.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|volume&lt;br /&gt;
|The volume that the SE will play at. It has a maximum of 256 and a minimum of 0.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xf7 - se_FadeOut ===&lt;br /&gt;
Fades out the currently-playing [[sound effect]] across a certain number of frames.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|se_id&lt;br /&gt;
|A sound effect defined in SOUND/SE of the ROM. Actually encoded as &amp;lt;code&amp;gt;sound_bank_id &amp;lt;&amp;lt; 8 + sound_id&amp;lt;/code&amp;gt;, but it can also be represented as an integer.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames used to fade out and silence a given SE.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xf8 - se_Play ===&lt;br /&gt;
Instantly plays a [[sound effect]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|se_id&lt;br /&gt;
|A sound effect defined in SOUND/SE of the ROM. Actually encoded as &amp;lt;code&amp;gt;sound_bank_id &amp;lt;&amp;lt; 8 + sound_id&amp;lt;/code&amp;gt;, but it can also be represented as an integer.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xf9 - se_PlayFull ===&lt;br /&gt;
Instantly plays a [[sound effect]] at a specified volume and panning.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|se_id&lt;br /&gt;
|A sound effect defined in SOUND/SE of the ROM. Actually encoded as &amp;lt;code&amp;gt;sound_bank_id &amp;lt;&amp;lt; 8 + sound_id&amp;lt;/code&amp;gt;, but it can also be represented as an integer.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|volume&lt;br /&gt;
|The volume that the SE will play at. It has a maximum of 256 and a minimum of 0.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|pan&lt;br /&gt;
|The panning of the SE. This parameter gets recalculated internally as  &amp;lt;code&amp;gt;((&#039;&#039;pan&#039;&#039; * 0x3f + ((&#039;&#039;pan&#039;&#039; * 0x3f &amp;gt;&amp;gt; 7) &amp;gt;&amp;gt; 0x18)) &amp;gt;&amp;gt; 8) + 0x40&amp;lt;/code&amp;gt;, which is eventually split up into two halfwords, then recalculated further into a signed byte.&lt;br /&gt;
What this means is that:&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;pan&#039;&#039; parameter of 260 will result in sound panning only to the right channel.&lt;br /&gt;
* A &#039;&#039;pan&#039;&#039; parameter of 261 will result in sound panning only to the left channel.&lt;br /&gt;
&lt;br /&gt;
More research on this parameter may be needed.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xfa - se_PlayPan ===&lt;br /&gt;
Instantly plays a [[sound effect]] at a specified panning.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|se_id&lt;br /&gt;
|A sound effect defined in SOUND/SE of the ROM. Actually encoded as &amp;lt;code&amp;gt;sound_bank_id &amp;lt;&amp;lt; 8 + sound_id&amp;lt;/code&amp;gt;, but it can also be represented as an integer.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|pan&lt;br /&gt;
|The panning of the SE. This parameter gets recalculated internally as  &amp;lt;code&amp;gt;((&#039;&#039;pan&#039;&#039; * 0x3f + ((&#039;&#039;pan&#039;&#039; * 0x3f &amp;gt;&amp;gt; 7) &amp;gt;&amp;gt; 0x18)) &amp;gt;&amp;gt; 8) + 0x40&amp;lt;/code&amp;gt;, which is eventually split up into two halfwords, then recalculated further into a signed byte.&lt;br /&gt;
What this means is that:&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;pan&#039;&#039; parameter of 260 will result in sound panning only to the right channel.&lt;br /&gt;
* A &#039;&#039;pan&#039;&#039; parameter of 261 will result in sound panning only to the left channel.&lt;br /&gt;
&lt;br /&gt;
More research on this parameter may be needed.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xfb - se_PlayVolume ===&lt;br /&gt;
Instantly plays a [[sound effect]] at a specified volume.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|se_id&lt;br /&gt;
|A sound effect defined in SOUND/SE of the ROM. Actually encoded as &amp;lt;code&amp;gt;sound_bank_id &amp;lt;&amp;lt; 8 + sound_id&amp;lt;/code&amp;gt;, but it can also be represented as an integer.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|volume&lt;br /&gt;
|The volume that the SE will play at. It has a maximum of 256 and a minimum of 0.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xfc - se_Stop ===&lt;br /&gt;
Instantly stops a specified sound effect.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|se_id&lt;br /&gt;
|A sound effect defined in SOUND/SE of the ROM. Actually encoded as &amp;lt;code&amp;gt;sound_bank_id &amp;lt;&amp;lt; 8 + sound_id&amp;lt;/code&amp;gt;, but it can also be represented as an integer.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xfd - SetAnimation ===&lt;br /&gt;
Plays a sprite&#039;s animation, optionally changing its speed and animation flags.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|id&lt;br /&gt;
|Animation table index. Converted to an [[Animation ID]] for the current sprite using the [https://docs.google.com/spreadsheets/d/11xHv80Def5mtF60ZsfI1lF1eNX0dBE2It837Q08AlRk/htmlview SetAnimation table].&lt;br /&gt;
|}&lt;br /&gt;
=== 0xfe - SetAttribute ===&lt;br /&gt;
Does nothing.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|Does nothing.&lt;br /&gt;
|}&lt;br /&gt;
=== 0xff - SetBlink ===&lt;br /&gt;
Sets a specific entity (i.e., an actor, object, or performer) to continuously flicker in and out of view at a certain interval.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|visible_interval&lt;br /&gt;
|The number of frames to wait for while the entity is visible. &lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|invisible_interval&lt;br /&gt;
|The number of frames to wait for while the entity is invisible. &lt;br /&gt;
|}&lt;br /&gt;
=== 0x100 - SetDirection ===&lt;br /&gt;
Instantly sets a specific entity (i.e., an actor, object, or performer) to a specified direction.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Direction&lt;br /&gt;
|direction&lt;br /&gt;
|The type of direction, the list of which can be seen by typing &amp;lt;code&amp;gt;DIR_&amp;lt;/code&amp;gt; in SkyTemple&#039;s Script Engine Debugger.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x101 - SetDirectionLives ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x102 - SetEffect ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Effect&lt;br /&gt;
|effect_id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|position_marker_id?&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x103 - SetFunctionAttribute ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|bitfield&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x104 - SetHeight ===&lt;br /&gt;
Moves an actor &amp;quot;vertically&amp;quot; by distancing it from its shadow. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|number of pixels to move up or down by.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x105 - SetHitAttribute ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|bitfield&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x106 - SetMoveRange ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|uint&lt;br /&gt;
|unk4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|uint&lt;br /&gt;
|unk5&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x107 - SetOutputAttribute ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|bitfield&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x108 - SetPosition ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|x&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|y&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x109 - SetPositionInitial ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x10a - SetPositionLives ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x10b - SetPositionMark ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x10c - SetPositionOffset ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x10d - SetPositionOffsetRandom ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x10e - SetReplyAttribute ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|bitfield&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x10f - SetupOutputAttributeAndAnimation ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x110 - Slide2Position ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to a specific pixel position without animation. Must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|x&lt;br /&gt;
|The pixel position on the X-axis.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|y&lt;br /&gt;
|The pixel position on the Y-axis.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x111 - Slide2PositionLives ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to an actor without animation. Must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|actor_id&lt;br /&gt;
|The ID of the actor to move the entity to.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x112 - Slide2PositionMark ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to one or more Position Marks without animation, and without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|The number of parameters to read from this opcode.&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x113 - Slide2PositionMark ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to a Position Mark without animation, and without restricting the angles used.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed.  Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_mark&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x114 - Slide2PositionOffset ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |These two parameters may be repeated multiple times&lt;br /&gt;
|-&lt;br /&gt;
|3+&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|}&lt;br /&gt;
=== 0x115 - Slide2PositionOffset ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x116 - Slide2PositionOffsetRandom ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x117 - Slide3Position ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|x&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|y&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x118 - Slide3PositionLives ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|actor_id&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x119 - Slide3PositionMark ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|This parameter may be repeated multiple times&lt;br /&gt;
|}&lt;br /&gt;
=== 0x11a - Slide3PositionMark ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x11b - Slide3PositionOffset ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |These two parameters may be repeated multiple times&lt;br /&gt;
|-&lt;br /&gt;
|3+&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|}&lt;br /&gt;
=== 0x11c - Slide3PositionOffset ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x11d - Slide3PositionOffsetRandom ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x11e - SlideHeight ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x11f - SlidePosition ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|x&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|y&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x120 - SlidePositionLives ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x121 - SlidePositionLivesTime ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x122 - SlidePositionMark ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to a Position Mark while restricting movement by eight angles—as if movement was performed using the D-Pad. Unlike MovePositionMark, this will not turn the entity to face the direction they are moving in.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|The number of parameters to read from this opcode.&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
This parameter may be repeated multiple times.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x123 - SlidePositionMark ===&lt;br /&gt;
Moves an entity (i.e., an actor, object, or performer) to a Position Mark while restricting movement by eight angles—as if movement was performed using the D-Pad. Unlike MovePositionMark, this will not turn the entity to face the direction they are moving in.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|Movement speed. Higher values result in a faster speed. &lt;br /&gt;
Values starting at 32770 and above will be slower than a value of 1.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|A structure consisting of a name, X unit, and Y unit. Units are defined as 8 pixels.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x124 - SlidePositionMarkTime ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x125 - SlidePositionOffset ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|num_parameters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2+&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
|This parameter may be repeated multiple times&lt;br /&gt;
|}&lt;br /&gt;
=== 0x126 - SlidePositionOffset ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|sint&lt;br /&gt;
|x&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|sint&lt;br /&gt;
|y&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x127 - sound_FadeOut ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x128 - sound_Stop ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x129 - StopAnimation ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x12a - supervision_Acting ===&lt;br /&gt;
Loads a sector of the Acting scene.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|layer_id&lt;br /&gt;
|The ID of the sector to load.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x12b - supervision_ActingInvisible ===&lt;br /&gt;
Loads a sector of the Acting scene. Actors and objects in this sector will be invisible. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|layer_id&lt;br /&gt;
|The ID of the sector to load.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x12c - supervision_ExecuteActing ===&lt;br /&gt;
Loads a specified Acting script from the specified level from within Enter/Acting/Sub scripts. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Level&lt;br /&gt;
|level&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|ConstString&lt;br /&gt;
|script_id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x12d - supervision_ExecuteActingSub ===&lt;br /&gt;
Loads a specified Acting script from the specified level from within Unionall&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Level&lt;br /&gt;
|level&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|ConstString&lt;br /&gt;
|script_id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x12e - supervision_ExecuteCommon ===&lt;br /&gt;
Loads a specified Unionall coroutine from within Enter/Acting/Sub scripts. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Routine&lt;br /&gt;
|coro_id&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x12f - supervision_ExecuteEnter ===&lt;br /&gt;
Loads an Enter script from the specified level. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|level_id&lt;br /&gt;
|An entry in the Level list. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x130 - supervision_ExecuteStation ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Level&lt;br /&gt;
|level&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|ConstString&lt;br /&gt;
|script_id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x131 - supervision_ExecuteStationCommon ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Level&lt;br /&gt;
|level&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x132 - supervision_ExecuteStationCommonSub ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Level&lt;br /&gt;
|level&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x133 - supervision_ExecuteStationSub ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Level&lt;br /&gt;
|level&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|ConstString&lt;br /&gt;
|script_id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x134 - supervision_ExecuteExport ===&lt;br /&gt;
Loads a specified Acting scene of the level S00P01A&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|ConstString&lt;br /&gt;
|script_id&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x135 - supervision_ExecuteExportSub ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|ConstString&lt;br /&gt;
|const&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x136 - supervision_LoadStation ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Level&lt;br /&gt;
|level&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|ConstString&lt;br /&gt;
|script_id&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x137 - supervision_Remove ===&lt;br /&gt;
Unloads a sector of the Sub scene.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|layer_id&lt;br /&gt;
|The ID of the sector to unload.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x138 - supervision_RemoveActing ===&lt;br /&gt;
Unloads a sector of the Acting scene. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|layer_id&lt;br /&gt;
|The ID of the sector to unload.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x139 - supervision_RemoveCommon ===&lt;br /&gt;
Unloads a sector of the Enter scene. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|layer_id&lt;br /&gt;
|The ID of the sector to unload.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x13a - supervision_SpecialActing ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x13b - supervision_Station ===&lt;br /&gt;
Loads a sector of the Sub scene.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|station_id&lt;br /&gt;
|The ID of the sector to load.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x13c - supervision_StationCommon ===&lt;br /&gt;
Loads a sector of the Enter scene.&lt;br /&gt;
&lt;br /&gt;
Can be used to call sectors of an enter scene within acting scenes!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|station_id&lt;br /&gt;
|The ID of the sector to load.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x13d - supervision_Suspend ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|sint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x13e - supervision2_SpecialActing ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x14c - Turn2Direction ===&lt;br /&gt;
Makes an actor rotate to a specified direction.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|How fast the actor turns. The higher the number, the slower the turn.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|rotationdirection&lt;br /&gt;
|The way that the actor will turn to face the specified direction. 1 = clockwise, 2 = counterclockwise, 10 = the most efficient direction to turn.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Direction&lt;br /&gt;
|direction&lt;br /&gt;
|The direction that the actor will turn to face.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x14d - Turn2DirectionLives ===&lt;br /&gt;
Makes an actor rotate to face another actor. Must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|How fast the actor turns. The higher the number, the slower the turn.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|rotationdirection&lt;br /&gt;
|The way that the actor will turn to face the specified direction. 1 = clockwise, 2 = counterclockwise, 10 = the most efficient direction to turn.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Entity&lt;br /&gt;
|actor_id&lt;br /&gt;
|The target actor that the actor will turn to face.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x14e - Turn2DirectionLives2 ===&lt;br /&gt;
Makes an actor rotate to face another actor. Must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|How fast the actor turns. The higher the number, the slower the turn.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|rotationdirection&lt;br /&gt;
|The way that the actor will turn to face the specified direction. 1 = clockwise, 2 = counterclockwise, 10 = the most efficient direction to turn.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|actor_id&lt;br /&gt;
|ID of the target actor from Level List that the actor will turn to face.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x14f - Turn2DirectionMark ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|unk6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|uint&lt;br /&gt;
|unk7&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x150 - Turn2DirectionTurn ===&lt;br /&gt;
Makes an actor turn at a certain angle. &lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|speed&lt;br /&gt;
|How fast the actor turns. The higher the number, the slower the turn.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|rotationdirection&lt;br /&gt;
|The way that the actor will turn to face the specified direction. 1 = clockwise, 2 = counterclockwise, 10 = the most efficient direction to turn.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|angle&lt;br /&gt;
|1: 45 degrees left, 2: 45 degrees right, 3: 90 degrees right, 4: 90 degrees left, 5: 180 degrees&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x151 - Turn3 ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|unk3&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x152 - TurnDirection ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Direction&lt;br /&gt;
|direction&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x153 - TurnDirectionLives ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x154 - TurnDirectionLives2 ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x155 - TurnDirectionMark ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x156 - Unlock ===&lt;br /&gt;
Resumes the routine that was suspended when &amp;lt;code&amp;gt;Lock&amp;lt;/code&amp;gt; was called with the specified &#039;&#039;lock_id&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|lock_id&lt;br /&gt;
|The ID of a Lock, ranged from 0-19 (inclusive).&lt;br /&gt;
|}&lt;br /&gt;
=== 0x157 - Wait ===&lt;br /&gt;
Pauses the routine for a set number of frames. After the number of frames, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|duration&lt;br /&gt;
|The number of frames that the routine will wait for before resuming.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x158 - WaitAnimation ===&lt;br /&gt;
Pauses the routine until the specified actor has finished its animation. After the actor finishes its animation, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
=== 0x159 - WaitBackEffect ===&lt;br /&gt;
Pauses the current routine until [[List of Opcodes#0x2 - back SetBackEffect|back_SetBackEffect]] is called.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x15a - WaitBack2Effect ===&lt;br /&gt;
Pauses the current routine until [[List of Opcodes#0x12 - back2 SetBackEffect|back2_SetBackEffect]] is called.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
&lt;br /&gt;
=== 0x15b - WaitBgm ===&lt;br /&gt;
Pauses the current routine until the specified BGM on the first BGM track has ended. After the BGM ends, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Bgm&lt;br /&gt;
|bgm_id&lt;br /&gt;
|A non-looped music track defined in SOUND/BGM of the ROM. Looped music tracks softlocks the game. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x15c - WaitBgm2 ===&lt;br /&gt;
Pauses the current routine until the specified BGM on the second BGM track has ended. After the BGM ends, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Bgm&lt;br /&gt;
|bgm_id&lt;br /&gt;
|A non-looped music track defined in SOUND/BGM of the ROM. Looped music tracks softlocks the game. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x15d - WaitBgmSignal ===&lt;br /&gt;
Pauses the routine until a DSE event with ID 0xF6 on the current BGM track is triggered. This can be used to sync certain parts of the scene to the background music.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x15e - WaitEffect ===&lt;br /&gt;
Pauses the routine until the effect on the specified actor/peformer has ended. After the effect ends, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
This opcode does not have a parameter for an entity, as it must be used in a with-statement or a targeted routine.&lt;br /&gt;
&lt;br /&gt;
=== 0x15f - WaitEndAnimation ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x160 - WaitExecuteLives ===&lt;br /&gt;
Pauses the routine until the specified actor has finished its action (Move2Position, Slide2Position, etc.). After the actor finishes its action, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Entity&lt;br /&gt;
|actor_id&lt;br /&gt;
|The actor that the routine will wait for.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x161 - WaitExecuteObject ===&lt;br /&gt;
Pauses the current routine until the specified object has finished its action (Move2Position, Slide2Position, etc.). After the object finishes its action, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Object&lt;br /&gt;
|object_id&lt;br /&gt;
|The ID of the object that the routine will wait for.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x162 - WaitExecutePerformer ===&lt;br /&gt;
Pauses the current routine until the specified performer has finished its current action (Move2Position, Slide2Position, etc.) After the performer has finished its action, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|performer_id&lt;br /&gt;
|The ID of the performer that the routine will wait for.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x163 - WaitFadeIn ===&lt;br /&gt;
Pauses the current routine and waits for the screen to fade in. After the screen fades in, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
&lt;br /&gt;
=== 0x164 - WaitLockLives ===&lt;br /&gt;
Pauses the current routine until a [[List of Opcodes#0x8b - Lock|Lock]] opcode with the specified &#039;&#039;lock_id&#039;&#039; is reached in the specified actor&#039;s targeted routine. After the lock is reached, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|lock_id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Entity&lt;br /&gt;
|actor&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x165 - WaitLockObject ===&lt;br /&gt;
Pauses the current routine until a [[List of Opcodes#0x8b - Lock|Lock]] opcode with the specified &#039;&#039;lock_id&#039;&#039; is reached in the specified object&#039;s targeted routine. After the lock is reached, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|lock_id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Object&lt;br /&gt;
|object&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x166 - WaitLockPerformer ===&lt;br /&gt;
Pauses the current routine until a [[List of Opcodes#0x8b - Lock|Lock]] opcode with the specified &#039;&#039;lock_id&#039;&#039; is reached in the specified performer&#039;s targeted routine. After the lock is reached, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|lock_id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|performer&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x167 - WaitLockSupervision ===&lt;br /&gt;
Pauses the current routine until a [[List of Opcodes#0x8b - Lock|Lock]] opcode with the specified &#039;&#039;lock_id&#039;&#039; is reached in &amp;lt;code&amp;gt;def 0&amp;lt;/code&amp;gt;. After the lock is reached, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|lock_id&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x168 - WaitMe ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x169 - WaitMoveCamera ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x16a - WaitMoveCamera2 ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x16b - WaitRandom ===&lt;br /&gt;
Pauses the routine for a random number of frames. After the number of frames, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|duration_min&lt;br /&gt;
|Minimum number of frames that the routine will wait for before resuming.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|duration_max&lt;br /&gt;
|Maximum number of frames that the routine will wait for before resuming.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x16c - WaitScreenFade ===&lt;br /&gt;
Waits until screen_FadeIn finishes executing. &lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x16d - WaitScreenFadeAll ===&lt;br /&gt;
Waits until screen_FadeInAll finishes executing. &lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x16e - WaitScreen2Fade ===&lt;br /&gt;
Waits until screen2_FadeIn finishes executing. &lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x16f - WaitSe ===&lt;br /&gt;
Pauses the current routine until the specified sound effect has ended. After the sound effect ends, the routine will resume.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|se_id&lt;br /&gt;
|The ID of the sound to wait for the end of before resuming the routine.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x170 - WaitSpecialActing ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x171 - WaitSubScreen ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x172 - WaitSubSpecialActing ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x173 - worldmap_BlinkMark ===&lt;br /&gt;
Shows a blinking world map marker. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|world_map_marker_id&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x174 - worldmap_ChangeLevel ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x175 - worldmap_DeleteArrow ===&lt;br /&gt;
Remove the yellow arrow from the world map. &lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
&lt;br /&gt;
=== 0x176 - worldmap_MoveCamera ===&lt;br /&gt;
Moves the camera to the specified world map marker. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|world_map_marker_id&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x177 - worldmap_OffMessage ===&lt;br /&gt;
Removes a textbox with the world map marker&#039;s name from the Top Screen&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
&lt;br /&gt;
=== 0x178 - worldmap_SetArrow ===&lt;br /&gt;
Shows an arrow pointing to a specified world map marker&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|world_map_marker_id&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x179 - worldmap_SetCamera ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x17a - worldmap_SetLevel ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x17b - worldmap_SetMark ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x17c - worldmap_SetMessage ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|String&lt;br /&gt;
|txt&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x17d - worldmap_SetMessagePlace ===&lt;br /&gt;
Shows a textbox on the Top Screen with the specified world map marker&#039;s name. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|world_map_marker_id&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x17e - worldmap_SetMode ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Opcodes ==&lt;br /&gt;
These opcodes cannot be directly called from ExplorerScript, since they are represented as higher-level constructs.&lt;br /&gt;
&lt;br /&gt;
=== 0x28 - Branch ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x29 - BranchBit ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|index&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x2a - BranchDebug ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|param&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x2b - BranchEdit ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|param&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x2c - BranchExecuteSub ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x2d - BranchPerformance ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|index&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x2e - BranchScenarioNow ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x2f - BranchScenarioNowAfter ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x30 - BranchScenarioNowBefore ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x31 - BranchScenarioAfter ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x32 - BranchScenarioBefore ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x33 - BranchSum ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x34 - BranchValue ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|operator&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x35 - BranchVariable ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|operator&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|GameVar&lt;br /&gt;
|cmp_var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x36 - BranchVariation ===&lt;br /&gt;
Used for demo cutscenes.&lt;br /&gt;
&lt;br /&gt;
Jumps to the specified address if the first parameter is 0. On the demo version of the game, jumps if the first parameter is 3.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|param&lt;br /&gt;
|Unknown. Always 3.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|Address to jump to.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x37 - Call ===&lt;br /&gt;
Jumps to the specified address, runs code, and returns to the line of code in which this opcode was used (only if &amp;lt;code&amp;gt;return;&amp;lt;/code&amp;gt; was used in the routine this opcode calls). Only one call can be stored at a time!&lt;br /&gt;
&lt;br /&gt;
Use within macros is ill-advised, as using &amp;lt;code&amp;gt;return;&amp;lt;/code&amp;gt; within a macro will just end the macro!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|The address to call, e.g., &amp;lt;code&amp;gt;call @label_0;&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;§label_0;&amp;lt;/code&amp;gt; is defined in the script.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x63 - Case ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x64 - CaseMenu ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|String&lt;br /&gt;
|choice&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x65 - CaseMenu2 ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint?&lt;br /&gt;
|choice?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x66 - CaseScenario ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|operator&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x67 - CaseText ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|String&lt;br /&gt;
|display&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x68 - CaseValue ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|operator&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x69 - CaseVariable ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|operator&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x6e - DefaultText ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|String&lt;br /&gt;
|txt&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x70 - End ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x74 - flag_CalcBit ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|index&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|value&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x75 - flag_CalcValue ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|calc_operator&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|value&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x76 - flag_CalcVariable ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|calc_operator&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|GameVar&lt;br /&gt;
|var_to_set_from&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x77 - flag_Clear ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x78 - flag_Initial ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x79 - flag_Set ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|value&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x7a - flag_ResetDungeonResult ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x7b - flag_ResetScenario ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x7c - flag_SetAdventureLog ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x7d - flag_SetDungeonMode ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|dungeon_id&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|DungeonMode&lt;br /&gt;
|dungen_mode&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x7e - flag_SetDungeonResult ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x7f - flag_SetPerformance ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|index&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|value&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x80 - flag_SetScenario ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|scenario_value&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|level_value&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x82 - Hold ===&lt;br /&gt;
Will stall a script forever.&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x87 - Jump ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|jump_address&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x89 - lives ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Entity&lt;br /&gt;
|actor_id&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0xaa - message_SwitchMenu ===&lt;br /&gt;
Enclose within a switch case, and generates a dialogue prompt with the options present in subsequent &amp;quot;case menu(&amp;quot;text&amp;quot;):&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|cancel&lt;br /&gt;
|If player can use the B button to back out of a menu. 0 for false, 1 for true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|init&lt;br /&gt;
|Entry number to start the cursor at, starting at 1&lt;br /&gt;
|}&lt;br /&gt;
=== 0xab - message_SwitchMenu2 ===&lt;br /&gt;
Same as message_SwitchMenu, but it also takes an argument for a bitfield, and will only display dialogue options for which the corresponding bit is enabled (set to 1).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|cancel&lt;br /&gt;
|If player can use the B button to back out of a menu. 0 for false, 1 for true.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|init&lt;br /&gt;
|Entry number to start the cursor at, starting at 1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|Bitfield $VAR&lt;br /&gt;
|}&lt;br /&gt;
=== 0xac - message_SwitchMonologue ===&lt;br /&gt;
Structured similarly to a switch statement. Typically uses &amp;lt;code&amp;gt;$HERO_TALK_KIND&amp;lt;/code&amp;gt; as an argument, and uses multiple cases to display certain dialogue strings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 4:&amp;lt;/code&amp;gt; used when the player is male or genderless&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 5:&amp;lt;/code&amp;gt; used when the player is female&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;default:&amp;lt;/code&amp;gt; used when &amp;lt;code&amp;gt;$HERO_TALK_KIND&amp;lt;/code&amp;gt;&#039;s Talk Group has a value other than 4 or 5&lt;br /&gt;
&lt;br /&gt;
This opcode supports displaying a portrait. No sound effect is used when text is scrolling.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&amp;lt;code&amp;gt;$x_TALK_KIND&amp;lt;/code&amp;gt;, contains Talk Group number&lt;br /&gt;
|}&lt;br /&gt;
=== 0xad - message_SwitchTalk ===&lt;br /&gt;
Same as _SwitchMonologue, but typically uses &amp;lt;code&amp;gt;$PARTNER_TALK_KIND&amp;lt;/code&amp;gt; as an argument, and the cases used vary.&lt;br /&gt;
&lt;br /&gt;
Of the vanilla game partner options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 1:&amp;lt;/code&amp;gt; used if Squirtle, Tododile, Chimchar, Meowth, or Munchlax&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 2:&amp;lt;/code&amp;gt; used for all other male partners&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;case 3:&amp;lt;/code&amp;gt; used for all female partners&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;default:&amp;lt;/code&amp;gt; used when &amp;lt;code&amp;gt;$PARTNER_TALK_KIND&amp;lt;/code&amp;gt;&#039;s Talk Group has a value other than 1, 2, or 3&lt;br /&gt;
&lt;br /&gt;
This opcode supports displaying a portrait. The [[sound effect]] 16133 will emit from the each character scrolling in the text.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&amp;lt;code&amp;gt;$x_TALK_KIND&amp;lt;/code&amp;gt;, contains Talk Group number&lt;br /&gt;
|}&lt;br /&gt;
=== 0xc9 - object ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Object&lt;br /&gt;
|object_id&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0xcb - performer ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|performer_id&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0xd5 - Return ===&lt;br /&gt;
If run from within a macro, ends the macro.&lt;br /&gt;
&lt;br /&gt;
If run after the &amp;quot;call&amp;quot; opcode was used, will return to the address of the call opcode.&lt;br /&gt;
&lt;br /&gt;
If used within a script, ends the script. &lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x13f - Switch ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x140 - SwitchDirection ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Direction&lt;br /&gt;
|direction&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x141 - SwitchDirectionLives ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x142 - SwitchDirectionLives2 ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|unk0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x143 - SwitchDirectionMark ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|PositionMark&lt;br /&gt;
|pos_marker&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x144 - SwitchDungeonMode ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|dungeon_id&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x145 - SwitchLives ===&lt;br /&gt;
If inside a Switch Case, take the case equal to the species ID of the specified Actor!&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Entity&lt;br /&gt;
|actor_id&lt;br /&gt;
|An entry in the Actor List.&lt;br /&gt;
|}&lt;br /&gt;
=== 0x146 - SwitchRandom ===&lt;br /&gt;
To be used in a switch statement. Will switch to a case of a random number below the specified integer.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|uint&lt;br /&gt;
|max_value&lt;br /&gt;
|Largest random output, plus 1&lt;br /&gt;
|}&lt;br /&gt;
=== 0x147 - SwitchScenario ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x148 - SwitchScenarioLevel ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x149 - SwitchSector ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No parameters.&lt;br /&gt;
=== 0x14a - SwitchValue ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
=== 0x14b - SwitchVariable ===&lt;br /&gt;
&amp;lt;TO DO: Opcode description&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Parameters&lt;br /&gt;
|-&lt;br /&gt;
!#&lt;br /&gt;
!Type&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|GameVar&lt;br /&gt;
|var&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|uint&lt;br /&gt;
|unk1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|uint&lt;br /&gt;
|unk2&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
{{NavScriptTerms}}&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=List_of_Script_Variables&amp;diff=1092</id>
		<title>List of Script Variables</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=List_of_Script_Variables&amp;diff=1092"/>
		<updated>2025-07-09T10:26:46Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Remove comment&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists all the variables available on the scripting engine. They can be read or written to from scripts.&lt;br /&gt;
&lt;br /&gt;
Some variables store a single value, whereas others can store multiple bitflags.&lt;br /&gt;
&lt;br /&gt;
== List of variables ==&lt;br /&gt;
&lt;br /&gt;
=== 0x0 - VERSION ===&lt;br /&gt;
Seems to be used to keep track of save file versions. It&#039;s stored in the save file when the game is saved. When loading a save file, if the version value in it doesn&#039;t match the value of this variable, the save file is deleted.&lt;br /&gt;
&lt;br /&gt;
=== 0x1 - CONDITION ===&lt;br /&gt;
Completely unused. Purpose unknown...&lt;br /&gt;
&lt;br /&gt;
=== 0x2 - SCENARIO_SELECT ===&lt;br /&gt;
Two indexed values determined via the Top Menu. These are referenced by Unionall for general control flow.&lt;br /&gt;
&lt;br /&gt;
To be a bit more specific, the first coroutine run after the Top Menu is EVENT_DIVIDE, which checks for these indexed values. In doing so, the game knows when to load scripts from maingame, a Special Episode, or Rescue mode.&lt;br /&gt;
&lt;br /&gt;
=== 0x3 - SCENARIO_MAIN ===&lt;br /&gt;
Stores game progress. The first value correlates with the MAIN value (mostly aligns with the story chapter), while the second is generally used to track progress within that MAIN. &lt;br /&gt;
&lt;br /&gt;
=== 0x4 - SCENARIO_SIDE ===&lt;br /&gt;
Like SCENARIO_MAIN, but for special episode progress.&lt;br /&gt;
&lt;br /&gt;
=== 0x5 - SCENARIO_SUB1 ===&lt;br /&gt;
&lt;br /&gt;
=== 0x6 - SCENARIO_SUB2 ===&lt;br /&gt;
&lt;br /&gt;
=== 0x7 - SCENARIO_SUB3 ===&lt;br /&gt;
&lt;br /&gt;
=== 0x8 - SCENARIO_SUB4 ===&lt;br /&gt;
&lt;br /&gt;
=== 0x9 - SCENARIO_SUB5 ===&lt;br /&gt;
&lt;br /&gt;
=== 0xa - SCENARIO_SUB6 ===&lt;br /&gt;
&lt;br /&gt;
=== 0xb - SCENARIO_SUB7 ===&lt;br /&gt;
&lt;br /&gt;
=== 0xc - SCENARIO_SUB8 ===&lt;br /&gt;
As far as is currently known, SCENARIO_SUB1 through SCENARIO_SUB8 are completely unused by the base-game! Perhaps they were intended to store side-quest progress of some sort?&lt;br /&gt;
&lt;br /&gt;
=== 0xd - SIDE02_TALK ===&lt;br /&gt;
Three bit flags that keeps track of the neighbors Igglybuff talked to in Special Episode 2&lt;br /&gt;
&lt;br /&gt;
=== 0xe - SIDE06_ROOM ===&lt;br /&gt;
Three bit flags that keeps track of the Limestone Cavern paths Team Charm visited in Special Episode 4&lt;br /&gt;
&lt;br /&gt;
=== 0xf - SIDE08_BOSS2ND ===&lt;br /&gt;
True if the player lose against Sableyes in Barren Valley Clearing in Special Episode 5&lt;br /&gt;
&lt;br /&gt;
=== 0x10 - SIDE01_BOSS2ND ===&lt;br /&gt;
True if Snover has betrayed bidoof in Special Episode 1. Used to determine whether Snover will be an ally in Star Cave or not.&lt;br /&gt;
&lt;br /&gt;
=== 0x11 - SCENARIO_MAIN_BIT_FLAG ===&lt;br /&gt;
Has many purposes, sometimes have hardcoded or technical effects, but not always.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Number&lt;br /&gt;
!Where&#039;s used&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Unused.&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Gets set to 1 right after waking up in the guild. Used for the game to determine when partner dialogue should be changed to just &amp;quot;Good morning, [hero]...&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Unused.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Will end the current day if EVENT_DIVIDE is run.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Similar to 3. Seems to be related to missions&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Gets set to 1 if the player decides to go the wrong way during an expedition.&lt;br /&gt;
|-&lt;br /&gt;
|6, 7, 8&lt;br /&gt;
|Used to remember how the game was saved last.&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Used in G01P04A/um07. When it&#039;s not set, the game spawns triggers. Upon walkng to them, Croagunk calls hero and partner to tell that the Croagunk Swap Shop is now opened.&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|Gets set to 1 when it&#039;s a day to do jobs.&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|Gets set to 1 when it&#039;s a day to do sentry duty. &lt;br /&gt;
|-&lt;br /&gt;
|12, 13&lt;br /&gt;
|Marowak Dojo First Entry/ Final Maze Opening&lt;br /&gt;
|-&lt;br /&gt;
|14-23&lt;br /&gt;
|Used in Marowak&#039;s Dojo. If none of them are set, the player finished all the dojo dungeons.&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|Gets set when the player finishes all dojo dungeons. Used to only show a cutscene about the full dojo completion once. &lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|Gets set to 0 before the check whether it&#039;s set to 1 or not during a cutscene after finishing the Final Maze.&lt;br /&gt;
|-&lt;br /&gt;
|26, 27&lt;br /&gt;
|Unused&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|Gets set to 1 when the player finishes Final Maze. Used to give another cutscene if the Final Maze gets finished again. &lt;br /&gt;
|-&lt;br /&gt;
|29&lt;br /&gt;
|Gets set to 1 if the player decides to go back to the previous location(or back to the town) from the checkpoint.&lt;br /&gt;
|-&lt;br /&gt;
|30&lt;br /&gt;
|Seems to be used in TITLE_TEST to distinguish between Time and Darkness.&lt;br /&gt;
|-&lt;br /&gt;
|31&lt;br /&gt;
|Gets set to 1 when the player presses Go Rescue for the first time.&lt;br /&gt;
|-&lt;br /&gt;
|32&lt;br /&gt;
|Gets set to 1 when the player presses Standby Adventure for the first time.&lt;br /&gt;
|-&lt;br /&gt;
|33-39&lt;br /&gt;
|Used after collecting one of the seven treasures. If none of them are set, the game gives a Seven Treasures collection checkmark.&lt;br /&gt;
|-&lt;br /&gt;
|40&lt;br /&gt;
|Gets set if the player interacts with anything on the Pelipper Island. If set, the game will save upon leaving the island.&lt;br /&gt;
|-&lt;br /&gt;
|41&lt;br /&gt;
|Gets set to 1 when Chimecho tells hero and partner that they&#039;re now able to change team leader. Used to only show this cutscene once.&lt;br /&gt;
|-&lt;br /&gt;
|42&lt;br /&gt;
|Gets set to 1 when the partner says good morning to hero in Sharpedo Bluff, while $SCENARIO_MAIN is 29, 92. Used to only show this cutscene once, as it&#039;s called in coroutine EVENT_DIVIDE_AFTER, that is called really often.&lt;br /&gt;
|-&lt;br /&gt;
|43-45&lt;br /&gt;
|Aegis Cave&#039;s ice, rock and steel puzzles completion.&lt;br /&gt;
|-&lt;br /&gt;
|46&lt;br /&gt;
|Gets set to 1 if the player Drifblim&#039;s Gondola. Used to show a cutscene where Drifblim thanks hero and partner for using his service.&lt;br /&gt;
|-&lt;br /&gt;
|47&lt;br /&gt;
|Gets set to 1 when player talks with Ampharos about Sneasel&#039;s Sky Gift.&lt;br /&gt;
|-&lt;br /&gt;
|48&lt;br /&gt;
|Gets set to 1 when the player gets Sneasel&#039;s gift.&lt;br /&gt;
|-&lt;br /&gt;
|49&lt;br /&gt;
|Gets set to 1 when the player leaves the station clearing after getting Sneasel&#039;s gift.&lt;br /&gt;
|-&lt;br /&gt;
|50-60&lt;br /&gt;
|Sky Gift had been sent to Wigglytuff, Chatot, Diglett, Dugtrio, Sunflora, Loudred, Corphish, Chimecho, Bidoof, Croagunk and partner respectively.&lt;br /&gt;
|-&lt;br /&gt;
|61&lt;br /&gt;
|Gets set to 1 when the player gives an item to Happiny.&lt;br /&gt;
|-&lt;br /&gt;
|62-73&lt;br /&gt;
|Wigglytuff, Chatot, Diglett, Dugtrio, Sunflora, Loudred, Corphish, Chimecho, Bidoof, Croagunk, partner and Happiny respectively sent a Sky Gift to hero.&lt;br /&gt;
|-&lt;br /&gt;
|74-77&lt;br /&gt;
|Used to decide whether Happiny will appear on the 1st/3rd/5th/7th Station Clearing respectively. Happiny will always spawn on the 1st station if ITEM_BACKUP_GET = ITEM_BACKUP_TAKE.&lt;br /&gt;
|-&lt;br /&gt;
|78-81&lt;br /&gt;
|Used to decide whether Numel will appear on the 1st/3rd/5th/7th Station Clearing respectively. &lt;br /&gt;
|-&lt;br /&gt;
|82&lt;br /&gt;
|Gets set to 1 if the player already swapped items with Numel in the current attempt to climb to Sky Peak Summit.&lt;br /&gt;
|-&lt;br /&gt;
|83-87&lt;br /&gt;
|Used to decide whether Happiny will appear on the 1st/3rd/5th/7th Station/Summit Clearing respectively.&lt;br /&gt;
|-&lt;br /&gt;
|88&lt;br /&gt;
|Gets set to 1 when the player claims Jumpluff&#039;s gift.&lt;br /&gt;
|-&lt;br /&gt;
|89&lt;br /&gt;
|Used to decide whether Delibird should appear on the 9th Station Clearing. The chance of it being set is 50% each climbing attempt.&lt;br /&gt;
|-&lt;br /&gt;
|90&lt;br /&gt;
|Gets set to 1 when the player claims Delibird&#039;s gift.&lt;br /&gt;
|-&lt;br /&gt;
|91&lt;br /&gt;
|Gets set to 1 if the player gives an item to Heracross.&lt;br /&gt;
|-&lt;br /&gt;
|92&lt;br /&gt;
|Used to decide if a bottle should appear on the beach. The chance of it being set is 10%&lt;br /&gt;
|-&lt;br /&gt;
|93&lt;br /&gt;
|Used to decide if a client should appear in the cafe. The chance of it being set is 80%&lt;br /&gt;
|-&lt;br /&gt;
|94&lt;br /&gt;
|Gets set to 1 if the player receives a Gracidea.&lt;br /&gt;
|-&lt;br /&gt;
|95&lt;br /&gt;
|Gets set to 1 when Ursaring says that hero and partner can evolve.&lt;br /&gt;
|-&lt;br /&gt;
|96&lt;br /&gt;
|Gets set to 1 when Krabby says that bottles can appear on the beach.&lt;br /&gt;
|-&lt;br /&gt;
|97&lt;br /&gt;
|Gets set to 1 when Chimecho asks hero if recruits can stay at the cafe.&lt;br /&gt;
|-&lt;br /&gt;
|98&lt;br /&gt;
|Gets set to 1 in m00a01a. Doesn&#039;t seem to be used anywhere else.&lt;br /&gt;
|-&lt;br /&gt;
|99-127&lt;br /&gt;
|Unused.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x12 - SCENARIO_TALK_BIT_FLAG ===&lt;br /&gt;
Up through [200] are in use, and they primarily exist to remember if the player has already talked with an NPC (therefore playing modified or shorter dialogue the second time around). For example, every merchant in treasure town comments on the player&#039;s accomplishments (like defeating Darkrai) the first time you talk to them. Whether that conversation has happened yet is tracked with SCENARIO_TALK_BIT_FLAG.&lt;br /&gt;
&lt;br /&gt;
=== 0x13 - SCENARIO_BALANCE_FLAG ===&lt;br /&gt;
Starts at 0 and gets increased as the player completes certain story events. Controls bag size, Wynaut/Spinda dungeon unlocks, and the spawn threshold value of pokémon, which restricts spawning of some species until this variable reaches a certain value.&lt;br /&gt;
&lt;br /&gt;
==== Value changes ====&lt;br /&gt;
This table lists the exact story spots where the value of the flag is increased.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Flag value&lt;br /&gt;
!Story chapter&lt;br /&gt;
!Story event&lt;br /&gt;
!Scene&lt;br /&gt;
!Script&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|Start of a new game&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|3&lt;br /&gt;
|End of chapter&lt;br /&gt;
|V03P12A&lt;br /&gt;
|m03a1314.ssb&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|6&lt;br /&gt;
|Expedition members are announced&lt;br /&gt;
|G01P04A&lt;br /&gt;
|m08a0301.ssb&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|9&lt;br /&gt;
|End of chapter&lt;br /&gt;
|P04P01C&lt;br /&gt;
|m10a1213.ssb&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|13&lt;br /&gt;
|End of chapter&lt;br /&gt;
|V16P02A&lt;br /&gt;
|m16a0702.ssb&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|15&lt;br /&gt;
|End of chapter&lt;br /&gt;
|V19P06A&lt;br /&gt;
|m19b1014.ssb&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Post-game 1&lt;br /&gt;
|After graduating and moving to Sharpedo Bluff&lt;br /&gt;
|H02P99A&lt;br /&gt;
|s01p1103.ssb&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Game complete&lt;br /&gt;
|The Ursarings tell Hero and Partner they can evolve&lt;br /&gt;
(After unlocking Marine Resort) &lt;br /&gt;
|T01P01A&lt;br /&gt;
|m00p1401.ssb&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Bag size ====&lt;br /&gt;
This table lists the maximum bag size depending on the current value of &amp;lt;code&amp;gt;SCENARIO_BALANCE_FLAG&amp;lt;/code&amp;gt;.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Flag value&lt;br /&gt;
!Bag size&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|16&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|24&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|32&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|40&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|40&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|40&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|48&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|48&lt;br /&gt;
|}&lt;br /&gt;
Values higher than 7 will read garbage data and cause crashes.&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;PERFORMANCE_PROGRESS_LIST[2]&amp;lt;/code&amp;gt; is 0, the bag will only have 1 slot, regardless of the value of &amp;lt;code&amp;gt;SCENARIO_BALANCE_FLAG&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 0x14 - SCENARIO_BALANCE_DEBUG ===&lt;br /&gt;
If &amp;gt;= 0, overrides the value of &amp;lt;code&amp;gt;SCENARIO_BALANCE_FLAG&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 0x15 - CRYSTAL_COLOR_01 ===&lt;br /&gt;
Used to keep track of the current color of the first crystal during the Crystal Cave puzzle.&lt;br /&gt;
&lt;br /&gt;
=== 0x16 - CRYSTAL_COLOR_02 ===&lt;br /&gt;
Used to keep track of the current color of the second crystal during the Crystal Cave puzzle.&lt;br /&gt;
&lt;br /&gt;
=== 0x17 - CRYSTAL_COLOR_03 ===&lt;br /&gt;
Used to keep track of the current color of the third crystal during the Crystal Cave puzzle.&lt;br /&gt;
&lt;br /&gt;
Outside of this puzzle, these 3 variables are completely unused by the base game!&lt;br /&gt;
&lt;br /&gt;
=== 0x18 - COMPULSORY_SAVE_POINT ===&lt;br /&gt;
Used in cutscene saves for the game to know the coroutine it needs to jump to after reloading a save. Only used in the main story.&lt;br /&gt;
&lt;br /&gt;
=== 0x19 - COMPULSORY_SAVE_POINT_SIDE ===&lt;br /&gt;
Used in cutscene saves for the game to know the coroutine it needs to jump to after reloading a save. Only used in special episode.&lt;br /&gt;
&lt;br /&gt;
=== 0x1a - SCENARIO_SELECT_BACKUP ===&lt;br /&gt;
A carbon copy of SCENARIO_SELECT used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
&lt;br /&gt;
Is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x1b - SCENARIO_MAIN_BIT_FLAG_BACKUP ===&lt;br /&gt;
A carbon copy of SCENARIO_SELECT used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
&lt;br /&gt;
Is otherwise unused, and is a huge list of flags that can be used locally, or in places the player is unable to save!&lt;br /&gt;
&lt;br /&gt;
=== 0x1c - GROUND_ENTER ===&lt;br /&gt;
The map ID the player is currently in the enter scene for.&lt;br /&gt;
&lt;br /&gt;
=== 0x1d - GROUND_ENTER_LINK ===&lt;br /&gt;
Set to zero by EVENT_FORMATION. Purpose Unknown.&lt;br /&gt;
&lt;br /&gt;
=== 0x1e - GROUND_GETOUT ===&lt;br /&gt;
The map ID of the enter scene the player was on before the current one. Usually used to decide where the player should enter from on the next map. &lt;br /&gt;
&lt;br /&gt;
=== 0x1f - GROUND_MAP ===&lt;br /&gt;
The map ID of the map currently rendered. Usually this is identical to GROUND_ENTER, unless the map that was loaded changes (Such as P01P01A changing to P01P03A when the cafe is unlocked). &lt;br /&gt;
&lt;br /&gt;
=== 0x20 - GROUND_PLACE ===&lt;br /&gt;
Determines the index for the map marker on the top-screen world map.&lt;br /&gt;
&lt;br /&gt;
=== 0x21 - GROUND_ENTER_BACKUP ===&lt;br /&gt;
A carbon copy of GROUND_ENTER used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
&lt;br /&gt;
As far as we know, is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x22 - GROUND_ENTER_LINK_BACKUP ===&lt;br /&gt;
A carbon copy of GROUND_ENTER_LINK used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
&lt;br /&gt;
As far as we know, is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x23 - GROUND_GETOUT_BACKUP ===&lt;br /&gt;
A carbon copy of GROUND_GETOUT used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
&lt;br /&gt;
As far as we know, is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x24 - GROUND_MAP_BACKUP ===&lt;br /&gt;
A carbon copy of GROUND_MAP used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
&lt;br /&gt;
As far as we know, is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x25 - GROUND_PLACE_BACKUP ===&lt;br /&gt;
A carbon copy of GROUND_PLACE used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
&lt;br /&gt;
As far as we know, is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x26 - DUNGEON_SELECT ===&lt;br /&gt;
The dungeon ID selected by the crossroads. Possibly reused elsewhere. &lt;br /&gt;
&lt;br /&gt;
=== 0x27 - DUNGEON_ENTER ===&lt;br /&gt;
Stores the dungeon ID the player enters, but only in DMODE_OPEN or DMODE_CLOSED. Otherwise, may be set to 214 or 215.  &lt;br /&gt;
&lt;br /&gt;
DUNGEON_ENTER_INDEX is a more reliable tracker of the dungeon ID.  &lt;br /&gt;
&lt;br /&gt;
=== 0x28 - DUNGEON_ENTER_MODE ===&lt;br /&gt;
Seems to be the DMODE of the dungeon being entered. &lt;br /&gt;
&lt;br /&gt;
=== 0x29 - DUNGEON_ENTER_INDEX ===&lt;br /&gt;
Is written on selecting a dungeon from the crossroads (and probably elsewhere). Generally used by the base game to remember the dungeon ID that the player is about to enter or has just exited. &lt;br /&gt;
&lt;br /&gt;
=== 0x2a - DUNGEON_ENTER_FREQUENCY ===&lt;br /&gt;
A running total of how many times the player has entered any dungeon. &lt;br /&gt;
&lt;br /&gt;
=== 0x2b - DUNGEON_RESULT ===&lt;br /&gt;
Stores how the dungeon was exited. Typically GROUND_START_MODE also stores this information, though that has other uses in ground mode.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Meaning&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Dungeon was cleared&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Escape Orb Used&lt;br /&gt;
|-&lt;br /&gt;
|Other&lt;br /&gt;
|Defeated in Dungeon&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x2c - GROUND_START_MODE ===&lt;br /&gt;
The &amp;quot;mode&amp;quot; the game is in when it enters Ground Mode. Uses the same values as DUNGEON_RESULT when exiting a dungeon, but other values appear to be present. coroutine EVENT_FORMATION assigns it to 3, for unknown reasons.&lt;br /&gt;
&lt;br /&gt;
=== 0x2d - DUNGEON_ENTER_BACKUP ===&lt;br /&gt;
A carbon copy of DUNGEON_ENTER used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
&lt;br /&gt;
As far as we know, is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x2e - DUNGEON_ENTER_MODE_BACKUP ===&lt;br /&gt;
A carbon copy of DUNGEON_ENTER_MODE used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
&lt;br /&gt;
As far as we know, is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x2f - DUNGEON_ENTER_INDEX_BACKUP ===&lt;br /&gt;
A carbon copy of DUNGEON_ENTER_INDEX used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
&lt;br /&gt;
As far as we know, is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x30 - DUNGEON_ENTER_FREQUENCY_BACKUP ===&lt;br /&gt;
A carbon copy of DUNGEON_ENTER_FREQUENCY used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
&lt;br /&gt;
As far as we know, is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x31 - DUNGEON_RESULT_BACKUP ===&lt;br /&gt;
A carbon copy of DUNGEON_RESULT used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
&lt;br /&gt;
As far as we know, is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x32 - GROUND_START_MODE_BACKUP ===&lt;br /&gt;
A carbon copy of DUNGEON_START_MODE used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
&lt;br /&gt;
As far as we know, is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x33 - REQUEST_CLEAR_COUNT ===&lt;br /&gt;
Stores the number of jobs the player has completed at certain points in the story to determine when the next story event will occur. Will never increment above 100 in the base game.&lt;br /&gt;
&lt;br /&gt;
=== 0x34 - PLAYER_KIND ===&lt;br /&gt;
Determines what actor&#039;s species should replace ACTOR_PLAYER when displayed:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Actor to Pull Species From&lt;br /&gt;
!Base-Game Species&lt;br /&gt;
!Use Case&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Species of Chimecho Assembly entry 0&lt;br /&gt;
|The Hero&lt;br /&gt;
|Treasure Town&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Species of Chimecho Assembly entry 1&lt;br /&gt;
|The Partner&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Nothing&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Species of current party leader&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|ACTOR_ATTENDANT_BIPPA&lt;br /&gt;
|Bidoof&lt;br /&gt;
|Special Episode 1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|ACTOR_ATTENDANT_PUPURIN&lt;br /&gt;
|Igglybuff&lt;br /&gt;
|Special Episode 2&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|ACTOR_ATTENDANT_KIMAWARI&lt;br /&gt;
|Sunflora&lt;br /&gt;
|Special Episode 3&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|ACTOR_ATTENDANT_FUTURE&lt;br /&gt;
|Grovyle&lt;br /&gt;
|Special Episode 5&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|ACTOR_ATTENDANT_CHARMS&lt;br /&gt;
|Lopunny&lt;br /&gt;
|Special Episode 4&lt;br /&gt;
|-&lt;br /&gt;
|9+&lt;br /&gt;
|Nothing&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x35 - ATTENDANT1_KIND ===&lt;br /&gt;
Determines what actor&#039;s species should replace ACTOR_ATTENDANT1 (and possibly other related actors) when displayed:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Actor to Pull Species From&lt;br /&gt;
!Base-Game Species&lt;br /&gt;
!Use Case&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Nothing&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Species of Chimecho Assembly entry 0&lt;br /&gt;
|The Hero&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Species of Chimecho Assembly entry 1&lt;br /&gt;
|The Partner&lt;br /&gt;
|Treasure Town&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Nothing&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Species of current party leader&lt;br /&gt;
|N/A&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5-9&lt;br /&gt;
|Nothing&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|ACTOR_ATTENDANT_MANAFI&lt;br /&gt;
|Manaphy&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x36 - ATTENDANT2_KIND ===&lt;br /&gt;
Determines what actor&#039;s species should replace ACTOR_ATTENDANT2 when displayed.&lt;br /&gt;
&lt;br /&gt;
Will be &amp;quot;Nothing&amp;quot; unless it is 10, in which case Manaphy will slowly follow ATTENDANT1_KIND&lt;br /&gt;
&lt;br /&gt;
=== 0x37 - PLAYER_KIND_BACKUP ===&lt;br /&gt;
A carbon copy of PLAYER_KIND used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
As far as we know, is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x38 - ATTENDANT1_KIND_BACKUP ===&lt;br /&gt;
A carbon copy of ATTENDANT1_KIND used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
As far as we know, is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x39 - ATTENDANT2_KIND_BACKUP ===&lt;br /&gt;
A carbon copy of ATTENDANT2_KIND used while the game is saving to ensure that data is never lost by interrupting the save.&lt;br /&gt;
As far as we know, is otherwise unused!&lt;br /&gt;
&lt;br /&gt;
=== 0x3a - FRIEND_SUM ===&lt;br /&gt;
Unknown&lt;br /&gt;
&lt;br /&gt;
=== 0x3b - UNIT_SUM ===&lt;br /&gt;
Unknown&lt;br /&gt;
&lt;br /&gt;
=== 0x3c - CARRY_GOLD ===&lt;br /&gt;
Stores the current amount of money carried by the player.&lt;br /&gt;
&lt;br /&gt;
=== 0x3d - BANK_GOLD ===&lt;br /&gt;
Stores the current amount of money stored in Duskull&#039;s bank.&lt;br /&gt;
&lt;br /&gt;
=== 0x3e - HERO_FIRST_KIND ===&lt;br /&gt;
The species ID of the initial hero starter.&lt;br /&gt;
&lt;br /&gt;
=== 0x3f - HERO_FIRST_NAME ===&lt;br /&gt;
The stored name of the initial hero starter, as a 10 character array of ASCII values.&lt;br /&gt;
&lt;br /&gt;
=== 0x40 - PARTNER_FIRST_KIND ===&lt;br /&gt;
The species ID of the initial partner starter.&lt;br /&gt;
&lt;br /&gt;
=== 0x41 - PARTNER_FIRST_NAME ===&lt;br /&gt;
The stored name of the initial partner starter, as a 10 character array of ASCII values.&lt;br /&gt;
&lt;br /&gt;
=== 0x42 - HERO_TALK_KIND ===&lt;br /&gt;
Determines which of kind of dialogue the hero will use. In base game, only 4 and 5 are used for HERO_TALK_KIND, but with something like StarterMenuTool (or QuizMenuTool) these can be assigned to more custom values. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Hero Species&lt;br /&gt;
!Use Case&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Male Pokemon&lt;br /&gt;
|Masculine Pronouns&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Female/Genderless Pokemon&lt;br /&gt;
|Feminine Pronouns&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x43 - PARTNER_TALK_KIND ===&lt;br /&gt;
Determines which of kind of dialogue the partner will use. In base game, only 1, 2, and 3 are used for PARTNER_TALK_KIND, but with something like StarterMenuTool (or QuizMenuTool) these can be assigned to more custom values. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Partner Species&lt;br /&gt;
!Use Case&lt;br /&gt;
!Example Dialogue Use&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Squirtle, Totodile, Chimchar, Meowth or Munchlax&lt;br /&gt;
|More &amp;quot;bold&amp;quot; dialogue-wise&lt;br /&gt;
|No more wimping out. I have to be brave today.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|All other Male Species&lt;br /&gt;
|Less &amp;quot;bold&amp;quot; dialogue-wise&lt;br /&gt;
|This is it. I have to steel my courage today.&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|All female Species&lt;br /&gt;
|Least &amp;quot;bold&amp;quot; dialogue-wise&lt;br /&gt;
|This is it. Today I’m going to be brave.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x44 - RANDOM_REQUEST_NPC03_KIND ===&lt;br /&gt;
Determines the species of ACTOR_RANDOM_REQUEST_NPC03, or the Spinda Cafe client Pokémon. It is either a random Pokémon, Magnemite, or Togetic, depending on the mission.&lt;br /&gt;
&lt;br /&gt;
=== 0x45 - CONFIG_COLOR_KIND ===&lt;br /&gt;
The aura bow color determined by the personality quiz at the beginning of the game. Only ever used by wigglytuff to determine the color of aura bow given to the player.&lt;br /&gt;
&lt;br /&gt;
=== 0x46 - ROM_VARIATION ===&lt;br /&gt;
Unknown, but hardcoded to zero.&lt;br /&gt;
&lt;br /&gt;
=== 0x47 - LANGUAGE_TYPE ===&lt;br /&gt;
Stores the language from DS Firmware. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Value&lt;br /&gt;
!Language&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Japanese&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|English&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|French&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|German&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Italian&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Spanish&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 0x48 - GAME_MODE ===&lt;br /&gt;
Keeps track of the current game mode.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!ID&lt;br /&gt;
!Mode&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|Top menu&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Normal play, including overworld and dungeons&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Special episode&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Rescue&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
There might be more valid values.&lt;br /&gt;
&lt;br /&gt;
=== 0x49 - EXECUTE_SPECIAL_EPISODE_TYPE ===&lt;br /&gt;
Tracks which Special Episode is currently active. The base-game prefers this variable over SPECIAL_EPISODE_TYPE, though it is unknown if they differ at all.&lt;br /&gt;
&lt;br /&gt;
=== 0x4a - SPECIAL_EPISODE_TYPE ===&lt;br /&gt;
Tracks which Special Episode is currently active, just like EXECUTE_SPECIAL_EPISODE_TYPE.&lt;br /&gt;
&lt;br /&gt;
=== 0x4b - SPECIAL_EPISODE_OPEN ===&lt;br /&gt;
Keeps track of what Special Episodes are unlocked.&lt;br /&gt;
&lt;br /&gt;
The following is the list of scripts where the Special Episodes are unlocked in the base-game:&lt;br /&gt;
&lt;br /&gt;
- SPECIAL_EPISODE_OPEN[0] (Bidoof&#039;s Wish): V03P12A - m03a1314&lt;br /&gt;
&lt;br /&gt;
- SPECIAL_EPISODE_OPEN[1] (Igglybuff the Prodigy): P04P01C - m10a1213&lt;br /&gt;
&lt;br /&gt;
- SPECIAL_EPISODE_OPEN[2] (Today&#039;s Oh My Gosh): G01P04A - m16a0105&lt;br /&gt;
&lt;br /&gt;
- SPECIAL_EPISODE_OPEN[3] (Here Comes Team Charm!): D01P11A - m20a0101&lt;br /&gt;
&lt;br /&gt;
- SPECIAL_EPISODE_OPEN[4] (In the Future of Darkness): H02P99A - s01p1103&lt;br /&gt;
&lt;br /&gt;
=== 0x4c - SPECIAL_EPISODE_OPEN_OLD ===&lt;br /&gt;
Keeps track of what Special Episodes were started. Used to show an exclamation mark if the episode is opened but wasn&#039;t started.&lt;br /&gt;
&lt;br /&gt;
=== 0x4d - SPECIAL_EPISODE_CONQUEST ===&lt;br /&gt;
Keeps track of what Special Episodes did the player finished. Also unlocks the Special Episode&#039;s respective Clear Icons.&lt;br /&gt;
&lt;br /&gt;
Note: This specific script variable is not in any script. It is actually triggered by an &#039;&#039;&#039;adventure_log&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
The following is the list of the &#039;&#039;&#039;adventure_log&#039;&#039;&#039; that triggers this Script Variable and its location for each Special Episode:&lt;br /&gt;
&lt;br /&gt;
- SPECIAL_EPISODE_CONQUEST[0] (Bidoof&#039;s Wish): Triggered by &#039;&#039;&#039;adventure_log&#039;&#039;&#039; = 1000; in S04P01A - n03a3103&lt;br /&gt;
&lt;br /&gt;
- SPECIAL_EPISODE_CONQUEST[1] (Igglybuff the Prodigy): Triggered by &#039;&#039;&#039;adventure_log&#039;&#039;&#039; = 1001; in S04P01A - n03a1704&lt;br /&gt;
&lt;br /&gt;
- SPECIAL_EPISODE_CONQUEST[2] (Today&#039;s Oh My Gosh): Triggered by &#039;&#039;&#039;adventure_log&#039;&#039;&#039; = 1002; in S04P01A - n04a2606&lt;br /&gt;
&lt;br /&gt;
- SPECIAL_EPISODE_CONQUEST[3] (Here Comes Team Charm!): Triggered by &#039;&#039;&#039;adventure_log&#039;&#039;&#039; = 1003; in S04P01A - n06a3909&lt;br /&gt;
&lt;br /&gt;
- SPECIAL_EPISODE_CONQUEST[4] (In the Future of Darkness): Triggered by &#039;&#039;&#039;adventure_log&#039;&#039;&#039; = 1004; in S04P01A - n09a2212&lt;br /&gt;
&lt;br /&gt;
=== 0x4e - PERFORMANCE_PROGRESS_LIST ===&lt;br /&gt;
List of flags used to keep track of unlocked features and achievements. See [[Performance Progress Flags]] for the full list.&lt;br /&gt;
&lt;br /&gt;
=== 0x4f - DUNGEON_OPEN_LIST ===&lt;br /&gt;
List of unlocked dungeons. One bit per dungeon ID. If true, and the dungeon isn&#039;t on some blacklist, you can enter this dungeon from the crossroads/dojo/igglybuff&#039;s house/pelipper standby adventure. &lt;br /&gt;
&lt;br /&gt;
Setting a dungeon to DMODE_OPEN or DMODE_OPEN_AND_REQUEST enables the matching bit in this field!&lt;br /&gt;
&lt;br /&gt;
=== 0x50 - DUNGEON_ENTER_LIST ===&lt;br /&gt;
Large bitfield sized for storing dungeon-specific data. This is checked at [NA]0x204CEE0, but never assigned. Presumed Unused&lt;br /&gt;
&lt;br /&gt;
=== 0x51 - DUNGEON_ARRIVE_LIST ===&lt;br /&gt;
Large bitfield sized for storing dungeon-specific data. Presumed Unused&lt;br /&gt;
&lt;br /&gt;
=== 0x52 - DUNGEON_CONQUEST_LIST ===&lt;br /&gt;
List of completed dungeons. One bit per dungeon ID. Automatically set on clearing any dungeon. &lt;br /&gt;
&lt;br /&gt;
In many cases, this bitfield renders other flags or variables redundant in a vanilla setting, especially certain $PERFORMANCE_PROGRESS_LIST flags that are always enabled after clearing certain dungeons for the first time. &lt;br /&gt;
&lt;br /&gt;
=== 0x53 - DUNGEON_PRESENT_LIST ===&lt;br /&gt;
Large bitfield sized for storing dungeon-specific data. Presumed Unused&lt;br /&gt;
&lt;br /&gt;
=== 0x54 - DUNGEON_REQUEST_LIST ===&lt;br /&gt;
List of dungeons that no longer have story progression. On completing a dungeon with this bit enabled, the player will enter [INSERT THE RIGHT COROUTINE HERE] in unionall. &lt;br /&gt;
&lt;br /&gt;
Setting a dungeon to DMODE_REQUEST or DMODE_OPEN_AND_REQUEST enables the matching bit in this field!&lt;br /&gt;
&lt;br /&gt;
Contrary to the name, this field alone is insufficient for missions to show up on the job board! Only dungeon in DMODE_OPEN_AND_REQUEST can have missions, and other (hardcoded) conditions must be met. &lt;br /&gt;
&lt;br /&gt;
=== 0x55 - WORLD_MAP_MARK_LIST_NORMAL ===&lt;br /&gt;
Use unknown.&lt;br /&gt;
&lt;br /&gt;
=== 0x56 - WORLD_MAP_MARK_LIST_SPECIAL ===&lt;br /&gt;
Use unknown.&lt;br /&gt;
&lt;br /&gt;
=== 0x57 - WORLD_MAP_LEVEL ===&lt;br /&gt;
Seems to be used to track the area covered by clouds on the world map. &lt;br /&gt;
&lt;br /&gt;
=== 0x58 - POSITION_X ===&lt;br /&gt;
Stores the X-coordinate of an entity when the LoadPosition() opcode is run on it.&lt;br /&gt;
&lt;br /&gt;
=== 0x59 - POSITION_Y ===&lt;br /&gt;
Stores the Y-coordinate of an entity when the LoadPosition() opcode is run on it.&lt;br /&gt;
&lt;br /&gt;
=== 0x5a - POSITION_HEIGHT ===&lt;br /&gt;
Stores the Z-coordinate of an entity when the LoadPosition() opcode is run on it.&lt;br /&gt;
&lt;br /&gt;
=== 0x5b - POSITION_DIRECTION ===&lt;br /&gt;
Stores the direction an entity is facing when the LoadPosition() opcode is run on it.&lt;br /&gt;
&lt;br /&gt;
=== 0x5c - EVENT_LOCAL ===&lt;br /&gt;
Used as scratch paper by the base game, and is reset between scripts.&lt;br /&gt;
&lt;br /&gt;
=== 0x5d - DUNGEON_EVENT_LOCAL ===&lt;br /&gt;
Used as scratch paper by the base game (possibly while within dungeons?), and is reset between scripts. &lt;br /&gt;
&lt;br /&gt;
=== 0x5e - STATION_ITEM_STATIC ===&lt;br /&gt;
Use unknown.&lt;br /&gt;
&lt;br /&gt;
=== 0x5f - STATION_ITEM_TEMP ===&lt;br /&gt;
Use unknown.&lt;br /&gt;
&lt;br /&gt;
=== 0x60 - DELIVER_ITEM_STATIC ===&lt;br /&gt;
Use unknown.&lt;br /&gt;
&lt;br /&gt;
=== 0x61 - DELIVER_ITEM_TEMP ===&lt;br /&gt;
Use unknown.&lt;br /&gt;
&lt;br /&gt;
=== 0x62 - BIT_FUWARANTE_LOCAL ===&lt;br /&gt;
Keeps track of the Sky Peak stations the player visited. Used in the script for Drifblim&#039;s Gondola.&lt;br /&gt;
&lt;br /&gt;
=== 0x63 - LOTTERY_RESULT ===&lt;br /&gt;
Used to track what result should occur during the Recycle Shop Prize Ticket Lottery. Has no other use.&lt;br /&gt;
&lt;br /&gt;
=== 0x64 - ITEM_BACKUP ===&lt;br /&gt;
Unlikely to be a backup flag. Conveniently sized for item_GetVariable to extract the item ID and metadata.&lt;br /&gt;
&lt;br /&gt;
Used somewhere in Sky Peak&lt;br /&gt;
&lt;br /&gt;
=== 0x65 - ITEM_BACKUP_KUREKURE ===&lt;br /&gt;
Happiny requests the item stored in this variable if found on Sky Peak. Pulled from an item table each day.&lt;br /&gt;
&lt;br /&gt;
=== 0x66 - ITEM_BACKUP_TAKE ===&lt;br /&gt;
Numel requests the item stored in this variable if found on Sky Peak. Pulled from an item table each day.&lt;br /&gt;
&lt;br /&gt;
=== 0x67 - ITEM_BACKUP_GET ===&lt;br /&gt;
Numel gives this item stored in this variable if found on Sky Peak. Pulled from an item table each day.&lt;br /&gt;
&lt;br /&gt;
=== 0x68 - REQUEST_THANKS_RESULT_KIND ===&lt;br /&gt;
&lt;br /&gt;
=== 0x69 - REQUEST_THANKS_RESULT_VARIATION ===&lt;br /&gt;
&lt;br /&gt;
=== 0x6a - SUB30_TREASURE_DISCOVER ===&lt;br /&gt;
If set to true, Wynaut tells hero and partner that a treasure was found. &lt;br /&gt;
&lt;br /&gt;
=== 0x6b - SUB30_SPOT_DISCOVER ===&lt;br /&gt;
If set to true, Wynaut tells hero and partner that a new unexplored area was discovered. &lt;br /&gt;
&lt;br /&gt;
=== 0x6c - RECYCLE_COUNT ===&lt;br /&gt;
Stores the number of recycles the player has done. Is only updated by the base-game at the end of each day.&lt;br /&gt;
&lt;br /&gt;
=== 0x6d - SUB30_SPOT_LEVEL ===&lt;br /&gt;
Keeps track of what dungeon was discovered by Project P. &lt;br /&gt;
&lt;br /&gt;
=== 0x6e - TEAM_RANK_EVENT_LEVEL ===&lt;br /&gt;
Has some correlation with guild rank? Unsure, I don&#039;t trust this variable. &lt;br /&gt;
&lt;br /&gt;
=== 0x6f - PLAY_OLD_GAME ===&lt;br /&gt;
True if the player answered yes to the question on the personality quiz that asks if you played Explorers of Time or Darkness. Increases the recruit rate of certain pokémon if you haven&#039;t recruited them yet.&lt;br /&gt;
&lt;br /&gt;
=== 0x70 - NOTE_MODIFY_FLAG ===&lt;br /&gt;
&lt;br /&gt;
=== 0x71 - SUB30_PROJECTP ===&lt;br /&gt;
If true, the player has viewed the Project P cutscene, and the recycle shop is capable of being upgraded.&lt;br /&gt;
&lt;br /&gt;
=== 0x72 - SUM ===&lt;br /&gt;
Seems to be a marker of the end of &amp;quot;normal&amp;quot; script variables.&lt;br /&gt;
&lt;br /&gt;
=== 0x400 - LOCAL0 ===&lt;br /&gt;
Unknown if used in vanilla, is reset on entering a new script like $EVENT_LOCAL. &lt;br /&gt;
&lt;br /&gt;
NOTE: Is unique for every routine in a script! $LOCAL0 in def 0 is distinct from $LOCAL0 in def 1! &lt;br /&gt;
&lt;br /&gt;
=== 0x401 - LOCAL1 ===&lt;br /&gt;
Unknown if used in vanilla, is reset on entering a new script like $EVENT_LOCAL. &lt;br /&gt;
&lt;br /&gt;
NOTE: Is unique for every routine in a script! $LOCAL1 indef 0 is distinct from $LOCAL1 in def 1! &lt;br /&gt;
&lt;br /&gt;
=== 0x402 - LOCAL2 ===&lt;br /&gt;
Broken, do not use unless you know what you are doing!&lt;br /&gt;
&lt;br /&gt;
=== 0x403 - LOCAL3 ===&lt;br /&gt;
Broken, do not use unless you know what you are doing!&lt;br /&gt;
&lt;br /&gt;
== Variable Lengths ==&lt;br /&gt;
Not all variables can store the same sized values! Some were allocated to be different sizes than others. Besides the standard sizes, there are 2 unusual variable sizes worth mentioning. &amp;quot;special&amp;quot; variable sizes are not stored in the same place as every other variable, and instead read some other value, such as the number of money the player currently has, or the current language of the ROM. &amp;quot;None&amp;quot; size is only used by the &amp;quot;SUM&amp;quot; variable, and has no allocated space at all. Below are a list of variables, their sizes, and how many there are:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Variable&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Size&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Count&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|VERSION&lt;br /&gt;
|int32&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|CONDITION&lt;br /&gt;
|int32&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_SELECT&lt;br /&gt;
|uint8&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_MAIN&lt;br /&gt;
|uint8&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_SIDE&lt;br /&gt;
|uint8&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_SUB1&lt;br /&gt;
|uint8&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_SUB2&lt;br /&gt;
|uint8&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_SUB3&lt;br /&gt;
|uint8&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_SUB4&lt;br /&gt;
|uint8&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_SUB5&lt;br /&gt;
|uint8&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_SUB6&lt;br /&gt;
|uint8&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_SUB7&lt;br /&gt;
|uint8&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_SUB8&lt;br /&gt;
|uint8&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|SIDE02_TALK&lt;br /&gt;
|bit&lt;br /&gt;
|0x3 (3)&lt;br /&gt;
|-&lt;br /&gt;
|SIDE06_ROOM&lt;br /&gt;
|bit&lt;br /&gt;
|0x3 (3)&lt;br /&gt;
|-&lt;br /&gt;
|SIDE08_BOSS2ND&lt;br /&gt;
|bit&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|SIDE01_BOSS2ND&lt;br /&gt;
|bit&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_MAIN_BIT_FLAG&lt;br /&gt;
|bit&lt;br /&gt;
|0x80 (128)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_TALK_BIT_FLAG&lt;br /&gt;
|bit&lt;br /&gt;
|0x100 (256)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_BALANCE_FLAG&lt;br /&gt;
|int8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_BALANCE_DEBUG&lt;br /&gt;
|int8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|CRYSTAL_COLOR_01&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|CRYSTAL_COLOR_02&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|CRYSTAL_COLOR_03&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|COMPULSORY_SAVE_POINT&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|COMPULSORY_SAVE_POINT_SIDE&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_SELECT_BACKUP&lt;br /&gt;
|uint8&lt;br /&gt;
|0x8 (8)&lt;br /&gt;
|-&lt;br /&gt;
|SCENARIO_MAIN_BIT_FLAG_BACKUP&lt;br /&gt;
|bit&lt;br /&gt;
|0x200 (512)&lt;br /&gt;
|-&lt;br /&gt;
|GROUND_ENTER&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|GROUND_ENTER_LINK&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|GROUND_GETOUT&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|GROUND_MAP&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|GROUND_PLACE&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|GROUND_ENTER_BACKUP&lt;br /&gt;
|int16&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|GROUND_ENTER_LINK_BACKUP&lt;br /&gt;
|uint8&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|GROUND_GETOUT_BACKUP&lt;br /&gt;
|int16&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|GROUND_MAP_BACKUP&lt;br /&gt;
|int16&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|GROUND_PLACE_BACKUP&lt;br /&gt;
|int16&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_SELECT&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_ENTER&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_ENTER_MODE&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_ENTER_INDEX&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_ENTER_FREQUENCY&lt;br /&gt;
|uint16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_RESULT&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|GROUND_START_MODE&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_ENTER_BACKUP&lt;br /&gt;
|int16&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_ENTER_MODE_BACKUP&lt;br /&gt;
|int16&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_ENTER_INDEX_BACKUP&lt;br /&gt;
|int16&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_ENTER_FREQUENCY_BACKUP&lt;br /&gt;
|uint16&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_RESULT_BACKUP&lt;br /&gt;
|uint8&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|GROUND_START_MODE_BACKUP&lt;br /&gt;
|uint8&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|REQUEST_CLEAR_COUNT&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|PLAYER_KIND&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|ATTENDANT1_KIND&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|ATTENDANT2_KIND&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|PLAYER_KIND_BACKUP&lt;br /&gt;
|uint8&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|ATTENDANT1_KIND_BACKUP&lt;br /&gt;
|uint8&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|ATTENDANT2_KIND_BACKUP&lt;br /&gt;
|uint8&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|FRIEND_SUM&lt;br /&gt;
|special&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|UNIT_SUM&lt;br /&gt;
|special&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|CARRY_GOLD&lt;br /&gt;
|special&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|BANK_GOLD&lt;br /&gt;
|special&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|HERO_FIRST_KIND&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|HERO_FIRST_NAME&lt;br /&gt;
|string&lt;br /&gt;
|0xA (10)&lt;br /&gt;
|-&lt;br /&gt;
|PARTNER_FIRST_KIND&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|PARTNER_FIRST_NAME&lt;br /&gt;
|string&lt;br /&gt;
|0xA (10)&lt;br /&gt;
|-&lt;br /&gt;
|HERO_TALK_KIND&lt;br /&gt;
|int8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|PARTNER_TALK_KIND&lt;br /&gt;
|int8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|RANDOM_REQUEST_NPC03_KIND&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|CONFIG_COLOR_KIND&lt;br /&gt;
|int8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|ROM_VARIATION&lt;br /&gt;
|int8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|LANGUAGE_TYPE&lt;br /&gt;
|special&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|GAME_MODE&lt;br /&gt;
|special&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|EXECUTE_SPECIAL_EPISODE_TYPE&lt;br /&gt;
|special&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|SPECIAL_EPISODE_TYPE&lt;br /&gt;
|int8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|SPECIAL_EPISODE_OPEN&lt;br /&gt;
|bit&lt;br /&gt;
|0x8 (8)&lt;br /&gt;
|-&lt;br /&gt;
|SPECIAL_EPISODE_OPEN_OLD&lt;br /&gt;
|bit&lt;br /&gt;
|0x8 (8)&lt;br /&gt;
|-&lt;br /&gt;
|SPECIAL_EPISODE_CONQUEST&lt;br /&gt;
|bit&lt;br /&gt;
|0x8 (8)&lt;br /&gt;
|-&lt;br /&gt;
|PERFORMANCE_PROGRESS_LIST&lt;br /&gt;
|bit&lt;br /&gt;
|0x40 (64)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_OPEN_LIST&lt;br /&gt;
|bit&lt;br /&gt;
|0x100 (256)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_ENTER_LIST&lt;br /&gt;
|bit&lt;br /&gt;
|0x100 (256)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_ARRIVE_LIST&lt;br /&gt;
|bit&lt;br /&gt;
|0x100 (256)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_CONQUEST_LIST&lt;br /&gt;
|bit&lt;br /&gt;
|0x100 (256)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_PRESENT_LIST&lt;br /&gt;
|bit&lt;br /&gt;
|0x100 (256)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_REQUEST_LIST&lt;br /&gt;
|bit&lt;br /&gt;
|0x100 (256)&lt;br /&gt;
|-&lt;br /&gt;
|WORLD_MAP_MARK_LIST_NORMAL&lt;br /&gt;
|bit&lt;br /&gt;
|0x140 (320)&lt;br /&gt;
|-&lt;br /&gt;
|WORLD_MAP_MARK_LIST_SPECIAL&lt;br /&gt;
|bit&lt;br /&gt;
|0x140 (320)&lt;br /&gt;
|-&lt;br /&gt;
|WORLD_MAP_LEVEL&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|POSITION_X&lt;br /&gt;
|uint32&lt;br /&gt;
|0x3 (3)&lt;br /&gt;
|-&lt;br /&gt;
|POSITION_Y&lt;br /&gt;
|uint32&lt;br /&gt;
|0x3 (3)&lt;br /&gt;
|-&lt;br /&gt;
|POSITION_HEIGHT&lt;br /&gt;
|uint32&lt;br /&gt;
|0x3 (3)&lt;br /&gt;
|-&lt;br /&gt;
|POSITION_DIRECTION&lt;br /&gt;
|int8&lt;br /&gt;
|0x3 (3)&lt;br /&gt;
|-&lt;br /&gt;
|EVENT_LOCAL&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|DUNGEON_EVENT_LOCAL&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|STATION_ITEM_STATIC&lt;br /&gt;
|bit&lt;br /&gt;
|0x20 (32)&lt;br /&gt;
|-&lt;br /&gt;
|STATION_ITEM_TEMP&lt;br /&gt;
|bit&lt;br /&gt;
|0x20 (32)&lt;br /&gt;
|-&lt;br /&gt;
|DELIVER_ITEM_STATIC&lt;br /&gt;
|bit&lt;br /&gt;
|0x10 (16)&lt;br /&gt;
|-&lt;br /&gt;
|DELIVER_ITEM_TEMP&lt;br /&gt;
|bit&lt;br /&gt;
|0x10 (16)&lt;br /&gt;
|-&lt;br /&gt;
|BIT_FUWARANTE_LOCAL&lt;br /&gt;
|bit&lt;br /&gt;
|0x5 (5)&lt;br /&gt;
|-&lt;br /&gt;
|LOTTERY_RESULT&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|ITEM_BACKUP&lt;br /&gt;
|int16&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|ITEM_BACKUP_KUREKURE&lt;br /&gt;
|int16&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|ITEM_BACKUP_TAKE&lt;br /&gt;
|int16&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|ITEM_BACKUP_GET&lt;br /&gt;
|int16&lt;br /&gt;
|0x2 (2)&lt;br /&gt;
|-&lt;br /&gt;
|REQUEST_THANKS_RESULT_KIND&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|REQUEST_THANKS_RESULT_VARIATION&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|SUB30_TREASURE_DISCOVER&lt;br /&gt;
|bit&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|SUB30_SPOT_DISCOVER&lt;br /&gt;
|bit&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|RECYCLE_COUNT&lt;br /&gt;
|uint32&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|SUB30_SPOT_LEVEL&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|TEAM_RANK_EVENT_LEVEL&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|PLAY_OLD_GAME&lt;br /&gt;
|uint8&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|NOTE_MODIFY_FLAG&lt;br /&gt;
|special&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|SUB30_PROJECTP&lt;br /&gt;
|bit&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|SUM&lt;br /&gt;
|none&lt;br /&gt;
|0x0 (0)&lt;br /&gt;
|-&lt;br /&gt;
|LOCAL0&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|LOCAL1&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|LOCAL2&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|-&lt;br /&gt;
|LOCAL3&lt;br /&gt;
|int16&lt;br /&gt;
|0x1 (1)&lt;br /&gt;
|}&lt;br /&gt;
{{NavScriptTerms}}&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Recruitment_List&amp;diff=1034</id>
		<title>Recruitment List</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Recruitment_List&amp;diff=1034"/>
		<updated>2025-04-19T11:09:27Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Recruitment List is a list of all recruits available in the game. Those recruits aren&#039;t recruited by usual means in dungeons, but instead, gets recruited with a script command. Here, you can edit what pokemon can be recruited that way, their level and their location ID. Also, you can see an information of which command can be used to add pokemon to the team (with or without player&#039;s confirmation).&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=IQ_List&amp;diff=1033</id>
		<title>IQ List</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=IQ_List&amp;diff=1033"/>
		<updated>2025-04-19T11:09:14Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IQ list is a section in SkyTemple, found in Lists -&amp;gt; IQ. There, you can edit some of items properties (how much IQ Gummies and Nectar give for which type or how much Belly Gummies restore for each type), change the chance of Intimidator activation and edit which IQ skills is available for which group (if available at all), how much IQ is required for them, and which skills can&#039;t work at the same time. In an unedited ROM, there is five unused IQ skills, but only Parry Expert does anything.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Object_List&amp;diff=1032</id>
		<title>Object List</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Object_List&amp;diff=1032"/>
		<updated>2025-04-19T11:08:39Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Object List is the list of all objects in the game. Here, you can add or edit entries for objects, change the object&#039;s name (be careful: the game loads an object sprite with the same name as in the object string!), its type and toggle the flag (doing so will make the game render the object on the top screen instead of the touch screen).&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Clearmarks_and_Rankmarks&amp;diff=1031</id>
		<title>Clearmarks and Rankmarks</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Clearmarks_and_Rankmarks&amp;diff=1031"/>
		<updated>2025-04-19T11:08:16Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Clearmark is an image that shows on the Adventure Record screen when you complete a certain task. Rankmark is an image that shows when you press the X button in the overworld and represents the current rank you have. &lt;br /&gt;
&lt;br /&gt;
Clearmarks are located in Misc. Graphics/FONT/clrmark1.w16 (main game) or Misc. Graphics/FONT/clrmark2.w16 (Special Episode) and has a resolution of 16x16, while rankmarks are located Misc. Graphics/FONT/rankmark.w16 and has a resolution of 32x32. All of the images for an import must have one palette and have a name XX.png where XX is a number between 0 and 99.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=PartnersTriggerHiddenTraps&amp;diff=1030</id>
		<title>PartnersTriggerHiddenTraps</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=PartnersTriggerHiddenTraps&amp;diff=1030"/>
		<updated>2025-04-19T11:07:58Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PartnersTriggerHiddenTraps is a patch, created by Cipnit. When applied, all party members can trigger a hidden trap (without it, only hero can do so). Recommended for Complete Team Control, but not recommended if a dungeon has a Pitfall Trap, since anyone who isn&#039;t hero will be instantly killed.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=ChangeFixedFloorProperties&amp;diff=1029</id>
		<title>ChangeFixedFloorProperties</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=ChangeFixedFloorProperties&amp;diff=1029"/>
		<updated>2025-04-19T11:07:40Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ChangeFixedFloorProperties is an ASM patch, created by an anonymous contributor. When applied, it allows you to change certain parameters of fixed rooms (such as whether or not this room has a boss fight, whether it should be the only room of the dungeon or if it should be a part of the dungeon, and whether this room must have stairs or not.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Special_Process_Effect&amp;diff=1028</id>
		<title>Special Process Effect</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Special_Process_Effect&amp;diff=1028"/>
		<updated>2025-04-19T11:07:08Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Special Process Effects is a section that can be found in ASM-Patches. On the first tab, there is a list of all Special Processes (called by &amp;lt;code&amp;gt;ProcessSpecial(XX, argument, argument2);&amp;lt;/code&amp;gt;) and what Effect ID it uses. You can add your own Special Processes (keep in mind, that effect should be added first!). &lt;br /&gt;
&lt;br /&gt;
On the second tab, you can see Effect IDs and where they&#039;re used. There, you can add your own effects and import an ASM script to it.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Special_Episodes_Player_Character_List&amp;diff=1027</id>
		<title>Special Episodes Player Character List</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Special_Episodes_Player_Character_List&amp;diff=1027"/>
		<updated>2025-04-19T11:06:15Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Special Episodes Player Character List is a list, where you can edit the party for game&#039;s special episodes. In this list, you can modify party member&#039;s species, moves, levels, location ID (must be between 236-240 or 214), IQ and HP. The amount of slots and what slots are used in what episode is hardcoded.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=File:Upload_test.png&amp;diff=974</id>
		<title>File:Upload test.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=File:Upload_test.png&amp;diff=974"/>
		<updated>2025-04-09T19:41:05Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Extra_Overlay_Areas&amp;diff=955</id>
		<title>Extra Overlay Areas</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Extra_Overlay_Areas&amp;diff=955"/>
		<updated>2025-02-25T17:14:10Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Remove PartyUpdatesMap&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page keeps track of the areas inside overlay_0036.bin (the extra overlay added by the [[ExtraSpace]] patch) that have been assigned to ASM patches.&lt;br /&gt;
&lt;br /&gt;
If you want to make an ASM patch that needs extra space, you can request an area in the overlay by asking [[User:Frostbyte|Frostbyte]]. Make sure to know how much space you will need beforehand. Also please add a .area directive that includes the start and end address of your area after it’s assigned so you don’t accidentally overflow it (&amp;lt;code&amp;gt;.area endAddress - startAddress&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
You can request the space assigned to your patch to be increased as long as there’s some free space after its section. If there’s not enough space before the next entry begins, you will have to request a new area and add the new extra code there.&lt;br /&gt;
&lt;br /&gt;
An area that has already been assigned can never be unassigned nor reassigned, even if it’s no longer needed by the hack that requested it. This rule is needed since some people might have an old version of a patch that still needs that area.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Area (inclusive - exclusive)&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Patch&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|0x0 - 0x4&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Magic number 0xBAADF00D (little-endian)&lt;br /&gt;
|-&lt;br /&gt;
|0x4 - 0x10&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Reserved&lt;br /&gt;
|-&lt;br /&gt;
|0x10 - 0x480&lt;br /&gt;
|CompleteTeamControl&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x500 - 0x62C&lt;br /&gt;
|MoveShortcuts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x700 - 0x744&lt;br /&gt;
|HeroFaintKick&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x780 - 0x814&lt;br /&gt;
|FixMemorySoftlock&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x830 - 0x878&lt;br /&gt;
|DynamicBossesEverywhere&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x8B0 - 0x9B0&lt;br /&gt;
|RevampEggStarters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xA00 - 0xA30&lt;br /&gt;
|PitfallTrapTweak&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xA70 - 0xAEC&lt;br /&gt;
|BoldText&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xB20 - 0xB7C&lt;br /&gt;
|ChangeTextSound&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xBC0 - 0xC10&lt;br /&gt;
|AntiSoftlock&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xC40 - 0xCC0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Static init address array&#039;&#039;&#039;: 32 pointers to functions that will be called when the overlay is loaded. Null pointers are skipped.&lt;br /&gt;
&lt;br /&gt;
Other projects that use this overlay and need to perform some sort of initialization should add a pointer to their init function on the first empty slot in this array.&lt;br /&gt;
|-&lt;br /&gt;
|0xD00 - 0xD80&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Static init ID array&#039;&#039;&#039;: 32 integers used to identify which project is making use of each of the 32 entries in the static init address array. Each project should have an unique ID. 0 if an entry is unused.&lt;br /&gt;
&lt;br /&gt;
Projects must check these IDs to ensure they don’t overwrite an entry from another project. They must also make sure to remove their old entries (for example, if the location of the project’s init function changes) so the game doesn’t jump to outdated / invalid addresses.&lt;br /&gt;
|-&lt;br /&gt;
|0xE00 - 0x1120&lt;br /&gt;
|PushAllies&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x11A0 - 0x12F0&lt;br /&gt;
|BetterEnemyEvolution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1380 - 0x13B8&lt;br /&gt;
|NoWeatherStop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x13F0 - 0x1400&lt;br /&gt;
|UnusedDungeonChance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1420 - 0x17BC&lt;br /&gt;
|FixMemorySoftlock&lt;br /&gt;
|&amp;gt;= v2.0&lt;br /&gt;
|-&lt;br /&gt;
|0x1840 - 0x1888&lt;br /&gt;
|MoreSamplesAndPresets&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18B0 - 0x18E0&lt;br /&gt;
|AddKeyCheck&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18F0 - 0x1958&lt;br /&gt;
|DisplayScriptVariable&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1970 - 0x1A2C&lt;br /&gt;
|ChangePortraitMidText&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1A60 - 0x1B60&lt;br /&gt;
|MoreAudioMemory&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1B70 - 0x1B90&lt;br /&gt;
|TeamStatsPain&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1BA0 - 0x1BF4&lt;br /&gt;
|FixNo$GbaSaves&lt;br /&gt;
|&amp;gt;= v1.0&lt;br /&gt;
|-&lt;br /&gt;
|0x30F70 - 0x38F80&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Common area&#039;&#039;&#039;: Anyone can use this space however they want without having to request an area. Useful if you don’t care about compatibility with other patches that might use this space. For example, this can be used if you need some space for a patch that is only going to be used in a certain ROM hack.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=951</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=951"/>
		<updated>2025-02-17T17:11:56Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add link to SkyTemple&amp;#039;s repo on the anti-virus question&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away. If these false positives are stopping you from installing SkyTemple on Windows, check [[Installing newer versions on Windows|the guide for installing newer versions on Windows]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple is open source software. If you have concerns that it is malicious, the full source code is available to read and verify: https://github.com/SkyTemple/skytemple&lt;br /&gt;
&lt;br /&gt;
==== Why does SkyTemple set off false positives? ====&lt;br /&gt;
SkyTemple (and the SkyTemple Randomizer) use [https://pyinstaller.org/en/stable/ PyInstaller]. PyInstaller is coincidentally also used by many viruses, causing antiviruses to flag most programs that use it as viruses, even if they are not. This unfortunately includes SkyTemple, resulting in the false positives.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditGuestPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
Unfortunately, this is not inside the script engine and is hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices, however, can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[FAQ#Problems ROM patching|ROM Patching]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando that can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no real reason to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. If you want to try it out it’s recommended to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=950</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=950"/>
		<updated>2025-02-17T17:10:34Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Update guide link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away. If these false positives are stopping you from installing SkyTemple on Windows, check [[Installing newer versions on Windows|the guide for installing newer versions on Windows]].&lt;br /&gt;
&lt;br /&gt;
==== Why does SkyTemple set off false positives? ====&lt;br /&gt;
SkyTemple (and the SkyTemple Randomizer) use [https://pyinstaller.org/en/stable/ PyInstaller]. PyInstaller is coincidentally also used by many viruses, causing antiviruses to flag most programs that use it as viruses, even if they are not. This unfortunately includes SkyTemple, resulting in the false positives.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditGuestPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
Unfortunately, this is not inside the script engine and is hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices, however, can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[FAQ#Problems ROM patching|ROM Patching]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando that can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no real reason to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. If you want to try it out it’s recommended to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Installing_newer_versions_on_Windows&amp;diff=949</id>
		<title>Installing newer versions on Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Installing_newer_versions_on_Windows&amp;diff=949"/>
		<updated>2025-02-17T17:10:09Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Frostbyte moved page Guide: Installing newer versions on Windows to Installing newer versions on Windows without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Windows Defender frequently falsely flags SkyTemple as a virus, and the issue has become more problematic in newer versions (especially 1.8), to the point that Windows may refuse to install SkyTemple. This guide should hopefully help you get around these issues.&lt;br /&gt;
&lt;br /&gt;
# When you first download the SkyTemple installer, Windows Security will make a popup refusing to keep it. Tell it to &amp;quot;Keep Anyway&amp;quot;.&lt;br /&gt;
# When you try to run the SkyTemple installer, Windows Security will delete it and complain. Go to Windows Security -&amp;gt; Protection History, find the SkyTemple installer, and click Action -&amp;gt; Allow. This will let the installer stay the next time you download it.&lt;br /&gt;
# Download the installer again, and this time you will be able to install SkyTemple. On the big red Security popup that thinks it&#039;s something horrible, click &amp;quot;Install Anyway&amp;quot;.&lt;br /&gt;
# Once installed, Windows Security will quarantine the SkyTemple executable. Go to Windows Security -&amp;gt; Protection History, find the quarantined SkyTemple, and click Action -&amp;gt; Restore.&lt;br /&gt;
By following these steps, you should be able to properly install SkyTemple on Windows.&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Installing_newer_versions_on_Windows&amp;diff=948</id>
		<title>Installing newer versions on Windows</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Installing_newer_versions_on_Windows&amp;diff=948"/>
		<updated>2025-02-17T17:09:56Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add tutorials category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Windows Defender frequently falsely flags SkyTemple as a virus, and the issue has become more problematic in newer versions (especially 1.8), to the point that Windows may refuse to install SkyTemple. This guide should hopefully help you get around these issues.&lt;br /&gt;
&lt;br /&gt;
# When you first download the SkyTemple installer, Windows Security will make a popup refusing to keep it. Tell it to &amp;quot;Keep Anyway&amp;quot;.&lt;br /&gt;
# When you try to run the SkyTemple installer, Windows Security will delete it and complain. Go to Windows Security -&amp;gt; Protection History, find the SkyTemple installer, and click Action -&amp;gt; Allow. This will let the installer stay the next time you download it.&lt;br /&gt;
# Download the installer again, and this time you will be able to install SkyTemple. On the big red Security popup that thinks it&#039;s something horrible, click &amp;quot;Install Anyway&amp;quot;.&lt;br /&gt;
# Once installed, Windows Security will quarantine the SkyTemple executable. Go to Windows Security -&amp;gt; Protection History, find the quarantined SkyTemple, and click Action -&amp;gt; Restore.&lt;br /&gt;
By following these steps, you should be able to properly install SkyTemple on Windows.&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=List_of_Sound_Effects&amp;diff=940</id>
		<title>List of Sound Effects</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=List_of_Sound_Effects&amp;diff=940"/>
		<updated>2025-02-08T12:58:47Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Document Doom Seed&amp;#039;s effect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article documents the different sound effects in Explorers of Sky, including their ID number and a written description.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page lists the full IDs, although in reality, those are split in a bank ID and a sound ID. For example, sound #266 would be 0x10A in hexadecimal, which indicates that the sound has a bank ID of 1 and a sound ID of 10 (0xA). Banks have their own name as well. &amp;lt;!-- TO DO: It might be a good idea to categorize these by the bank they belong to, listing the sound ID within the bank and then the corresponding full ID.&lt;br /&gt;
Banks have specific names each, which are used in the sound test debug menu. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sound Effects ==&lt;br /&gt;
These sound effects can be called with &amp;lt;code&amp;gt;se_Play(X);&amp;lt;/code&amp;gt;, where &amp;quot;X&amp;quot; is the sound effect ID. Other functions may call sound effect IDs as well, including the [[ChangeTextSound]] [[ASM Patch]].&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=mXy0FJiNkR0 A video by 25pi25] demonstrates what every effect sounds like, by ID.&lt;br /&gt;
&lt;br /&gt;
=== 266 ===&lt;br /&gt;
Tail Whip.&lt;br /&gt;
&lt;br /&gt;
=== 267 ===&lt;br /&gt;
Tail Whip, also.&lt;br /&gt;
&lt;br /&gt;
=== 279 ===&lt;br /&gt;
Stat changes reset.&lt;br /&gt;
&lt;br /&gt;
=== 516 ===&lt;br /&gt;
Doom seed.&lt;br /&gt;
&lt;br /&gt;
=== 521 ===&lt;br /&gt;
TM used.&lt;br /&gt;
&lt;br /&gt;
=== 523 ===&lt;br /&gt;
Special Attack up.&lt;br /&gt;
&lt;br /&gt;
=== 525 ===&lt;br /&gt;
Special Defense up.&lt;br /&gt;
&lt;br /&gt;
=== 527 ===&lt;br /&gt;
PP restored.&lt;br /&gt;
&lt;br /&gt;
=== 529 ===&lt;br /&gt;
Attack Speed up (from Chlorophyll, Swift Swim, or Unburden).&lt;br /&gt;
&lt;br /&gt;
=== 530 ===&lt;br /&gt;
Wary Fighter activated.&lt;br /&gt;
&lt;br /&gt;
=== 531 ===&lt;br /&gt;
Defense up.&lt;br /&gt;
&lt;br /&gt;
=== 534 ===&lt;br /&gt;
Defense lowered.&lt;br /&gt;
&lt;br /&gt;
=== 536 ===&lt;br /&gt;
Movement Speed up.&lt;br /&gt;
&lt;br /&gt;
=== 537 ===&lt;br /&gt;
PP lost.&lt;br /&gt;
&lt;br /&gt;
=== 538 ===&lt;br /&gt;
Movement Speed lowered.&lt;br /&gt;
&lt;br /&gt;
=== 542 ===&lt;br /&gt;
Special Attack lowered.&lt;br /&gt;
&lt;br /&gt;
=== 547 ===&lt;br /&gt;
Attack up.&lt;br /&gt;
&lt;br /&gt;
=== 776 ===&lt;br /&gt;
Smoke puffs like the ones in Grudge Traps.&lt;br /&gt;
&lt;br /&gt;
=== 783 ===&lt;br /&gt;
Grudge Trap and similar negative effects.&lt;br /&gt;
&lt;br /&gt;
=== 1045 ===&lt;br /&gt;
Earth Power.&lt;br /&gt;
&lt;br /&gt;
=== 1046 ===&lt;br /&gt;
Agility windup.&lt;br /&gt;
&lt;br /&gt;
=== 2065 ===&lt;br /&gt;
Feint windup.&lt;br /&gt;
&lt;br /&gt;
=== 2066 ===&lt;br /&gt;
Feint impact.&lt;br /&gt;
&lt;br /&gt;
=== 3077 ===&lt;br /&gt;
Brine.&lt;br /&gt;
&lt;br /&gt;
=== 3092 ===&lt;br /&gt;
Night Slash.&lt;br /&gt;
&lt;br /&gt;
=== 3098 ===&lt;br /&gt;
Attract.&lt;br /&gt;
&lt;br /&gt;
=== 3101 ===&lt;br /&gt;
Reviver Seed activated.&lt;br /&gt;
&lt;br /&gt;
=== 3587 ===&lt;br /&gt;
Ancient Power windup.&lt;br /&gt;
&lt;br /&gt;
=== 3587 ===&lt;br /&gt;
Brine.&lt;br /&gt;
&lt;br /&gt;
=== 3588 ===&lt;br /&gt;
Silver Wind.&lt;br /&gt;
&lt;br /&gt;
=== 3592 ===&lt;br /&gt;
Escape Orb.&lt;br /&gt;
&lt;br /&gt;
=== 4106 ===&lt;br /&gt;
Confuse Ray.&lt;br /&gt;
&lt;br /&gt;
=== 4107 ===&lt;br /&gt;
Rock Blast shot.&lt;br /&gt;
&lt;br /&gt;
=== 4108 ===&lt;br /&gt;
Rock Blast impact.&lt;br /&gt;
&lt;br /&gt;
=== 4112 ===&lt;br /&gt;
Uproar, Beat Up, Rollcall Orb.&lt;br /&gt;
&lt;br /&gt;
=== 4118 ===&lt;br /&gt;
Sing.&lt;br /&gt;
&lt;br /&gt;
=== 4353 ===&lt;br /&gt;
Run Away activated.&lt;br /&gt;
&lt;br /&gt;
=== 4359 ===&lt;br /&gt;
Leer.&lt;br /&gt;
&lt;br /&gt;
=== 4367 ===&lt;br /&gt;
Facade.&lt;br /&gt;
&lt;br /&gt;
=== 4373 ===&lt;br /&gt;
Helping Hand.&lt;br /&gt;
&lt;br /&gt;
=== 4609 ===&lt;br /&gt;
Evasion lowered.&lt;br /&gt;
&lt;br /&gt;
=== 4610 ===&lt;br /&gt;
Evasion up.&lt;br /&gt;
&lt;br /&gt;
=== 4613 ===&lt;br /&gt;
Poisoned.&lt;br /&gt;
&lt;br /&gt;
=== 4614 ===&lt;br /&gt;
Rain begins.&lt;br /&gt;
&lt;br /&gt;
=== 4615 ===&lt;br /&gt;
Cleanse Orb.&lt;br /&gt;
&lt;br /&gt;
=== 4624 ===&lt;br /&gt;
Swords Dance.&lt;br /&gt;
&lt;br /&gt;
=== 4628 ===&lt;br /&gt;
Whirlpool.&lt;br /&gt;
&lt;br /&gt;
=== 4631 ===&lt;br /&gt;
Yawn (both move and status).&lt;br /&gt;
&lt;br /&gt;
=== 4632 ===&lt;br /&gt;
Bubble.&lt;br /&gt;
&lt;br /&gt;
=== 4634 ===&lt;br /&gt;
Sun begins.&lt;br /&gt;
&lt;br /&gt;
=== 4635 ===&lt;br /&gt;
Max HP up.&lt;br /&gt;
&lt;br /&gt;
=== 4637 ===&lt;br /&gt;
Hail begins.&lt;br /&gt;
&lt;br /&gt;
=== 4867 ===&lt;br /&gt;
Stomach growling.&lt;br /&gt;
&lt;br /&gt;
=== 4868 ===&lt;br /&gt;
Player or ally item pickup.&lt;br /&gt;
&lt;br /&gt;
=== 4869 ===&lt;br /&gt;
Enemy item pickup.&lt;br /&gt;
&lt;br /&gt;
=== 4870 ===&lt;br /&gt;
Miss 1.&lt;br /&gt;
&lt;br /&gt;
=== 4871 ===&lt;br /&gt;
Miss 2.&lt;br /&gt;
&lt;br /&gt;
=== 4872 ===&lt;br /&gt;
Player or ally money pickup.&lt;br /&gt;
&lt;br /&gt;
=== 4882 ===&lt;br /&gt;
Apple eaten.&lt;br /&gt;
&lt;br /&gt;
=== 4883 ===&lt;br /&gt;
Seed eaten.&lt;br /&gt;
&lt;br /&gt;
=== 4884 ===&lt;br /&gt;
Gummi eaten (also used for Golden Apple).&lt;br /&gt;
&lt;br /&gt;
=== 4890 ===&lt;br /&gt;
HP restored.&lt;br /&gt;
&lt;br /&gt;
=== 4891 ===&lt;br /&gt;
Move learned.&lt;br /&gt;
&lt;br /&gt;
=== 5121 ===&lt;br /&gt;
The small generic being hit sound that also is played in the first cutscene with Zubat and Koffing when they attack the partner.&lt;br /&gt;
&lt;br /&gt;
=== 5122 ===&lt;br /&gt;
Chatot flapping his wings.&lt;br /&gt;
&lt;br /&gt;
=== 5123 ===&lt;br /&gt;
Dinner time.&lt;br /&gt;
&lt;br /&gt;
=== 5124 ===&lt;br /&gt;
Turning a page, handling paper.&lt;br /&gt;
&lt;br /&gt;
=== 5125 ===&lt;br /&gt;
&amp;quot;The clouds parted over the Hidden Land!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 5126 ===&lt;br /&gt;
Explosion, rocks falling.&lt;br /&gt;
&lt;br /&gt;
=== 5127 ===&lt;br /&gt;
Thunder?&lt;br /&gt;
&lt;br /&gt;
=== 5128 ===&lt;br /&gt;
Short and sweet explosion.&lt;br /&gt;
&lt;br /&gt;
=== 5129 ===&lt;br /&gt;
Smashing wall.&lt;br /&gt;
&lt;br /&gt;
=== 5130 ===&lt;br /&gt;
(Loop) Big wall collapsing/world falling apart.&lt;br /&gt;
&lt;br /&gt;
=== 5131 ===&lt;br /&gt;
(Loop) Explosion, rocks falling.&lt;br /&gt;
&lt;br /&gt;
=== 5132 ===&lt;br /&gt;
Dimensional Scream intro.&lt;br /&gt;
&lt;br /&gt;
=== 5133 ===&lt;br /&gt;
Dimensional Scream beginning, getting dizzy.&lt;br /&gt;
&lt;br /&gt;
=== 5134 ===&lt;br /&gt;
(Loop) Dimensional Scream beginning, getting dizzy.&lt;br /&gt;
&lt;br /&gt;
=== 5135 ===&lt;br /&gt;
Begin evolution.&lt;br /&gt;
&lt;br /&gt;
=== 5136 ===&lt;br /&gt;
Boss wipe start.&lt;br /&gt;
&lt;br /&gt;
=== 5137 ===&lt;br /&gt;
(Loop) Clapping, used with actor SetEffect(90, 3);&lt;br /&gt;
&lt;br /&gt;
=== 5138 ===&lt;br /&gt;
(Loop) Big cheering! Usually used with actor execute ExecuteCommon(CORO_JUMP_HAPPY_FUNC_SERIES, 0); or SetEffect(90, 3);&lt;br /&gt;
&lt;br /&gt;
=== 5139 ===&lt;br /&gt;
Dimensional Scream end.&lt;br /&gt;
&lt;br /&gt;
=== 5140 ===&lt;br /&gt;
Sounds like a more intense version of the sound before the boss fight/wipe.&lt;br /&gt;
&lt;br /&gt;
=== 5141 ===&lt;br /&gt;
Groudon stomp.&lt;br /&gt;
&lt;br /&gt;
=== 5142 ===&lt;br /&gt;
Groudon stomp.&lt;br /&gt;
&lt;br /&gt;
=== 5143 ===&lt;br /&gt;
VERY small hit sound, like used a few times right before a boss fight.&lt;br /&gt;
&lt;br /&gt;
=== 5144 ===&lt;br /&gt;
Crystals?&lt;br /&gt;
&lt;br /&gt;
=== 6401 ===&lt;br /&gt;
Finding a Time Gear, sounds a bit like another wipe sound.&lt;br /&gt;
&lt;br /&gt;
=== 6402 ===&lt;br /&gt;
The small electric discharge sound used in the game&#039;s opening cutscene.&lt;br /&gt;
&lt;br /&gt;
=== 6403 ===&lt;br /&gt;
Generic fade to white sound, used for cutscene in beginning, entering the hidden lands, etc.&lt;br /&gt;
&lt;br /&gt;
=== 6404 ===&lt;br /&gt;
Step/dropping something onto a wet floor.&lt;br /&gt;
&lt;br /&gt;
=== 6405 ===&lt;br /&gt;
Heavier step.&lt;br /&gt;
&lt;br /&gt;
=== 6406 ===&lt;br /&gt;
Dropping the Relic Fragment?&lt;br /&gt;
&lt;br /&gt;
=== 6407 ===&lt;br /&gt;
Cartoon balloon is inflated?&lt;br /&gt;
&lt;br /&gt;
=== 6408 ===&lt;br /&gt;
Gate to Wigglytuff&#039;s Guild opening, in m02a0105.ssb&lt;br /&gt;
&lt;br /&gt;
=== 6409 ===&lt;br /&gt;
Hitting wood.&lt;br /&gt;
&lt;br /&gt;
=== 6410 ===&lt;br /&gt;
Dropping, placing something.&lt;br /&gt;
&lt;br /&gt;
=== 6411 ===&lt;br /&gt;
Opening a treasure box.&lt;br /&gt;
&lt;br /&gt;
=== 6412 ===&lt;br /&gt;
Azurill tripping.&lt;br /&gt;
&lt;br /&gt;
=== 6413 ===&lt;br /&gt;
Apple bouncing.&lt;br /&gt;
&lt;br /&gt;
=== 6414 ===&lt;br /&gt;
Drowzee hitting the player accidentally.&lt;br /&gt;
&lt;br /&gt;
=== 6415 ===&lt;br /&gt;
Alert, board update completed.&lt;br /&gt;
&lt;br /&gt;
=== 6416 ===&lt;br /&gt;
Turning over the board after updating the data.&lt;br /&gt;
&lt;br /&gt;
=== 6417 ===&lt;br /&gt;
Drowzee fainting (map G01P03A, [[Acting Scene]] m06a0203).&lt;br /&gt;
&lt;br /&gt;
=== 6418 ===&lt;br /&gt;
Magnezone police.&lt;br /&gt;
&lt;br /&gt;
=== 6419 ===&lt;br /&gt;
Grovyle running.&lt;br /&gt;
&lt;br /&gt;
=== 6420 ===&lt;br /&gt;
(Loop) Grovyle still running.&lt;br /&gt;
&lt;br /&gt;
=== 6421 ===&lt;br /&gt;
Grovyle dashing.&lt;br /&gt;
&lt;br /&gt;
=== 6422 ===&lt;br /&gt;
Yet another sound of dropping something.&lt;br /&gt;
&lt;br /&gt;
=== 6423 ===&lt;br /&gt;
Crystals falling/little laser beam?&lt;br /&gt;
&lt;br /&gt;
=== 6424 ===&lt;br /&gt;
Thunder? Cannon sounds? Heavy things rolling down a hill?&lt;br /&gt;
&lt;br /&gt;
=== 6425 ===&lt;br /&gt;
Thunder in the distance?&lt;br /&gt;
&lt;br /&gt;
=== 6657 ===&lt;br /&gt;
Used with the Tumble and Hurt animations, rolling (to a stop) after jumping through the waterfall.&lt;br /&gt;
&lt;br /&gt;
=== 6658 ===&lt;br /&gt;
Click sound, pushing in the gem in Waterfall Cave.&lt;br /&gt;
&lt;br /&gt;
=== 6659 ===&lt;br /&gt;
Geyser erupting from Waterfall Cave flood?&lt;br /&gt;
&lt;br /&gt;
=== 6660 ===&lt;br /&gt;
Splash, landing in hotsprings?&lt;br /&gt;
&lt;br /&gt;
=== 6661 ===&lt;br /&gt;
Some sort of wipe sound, long and deep.&lt;br /&gt;
&lt;br /&gt;
=== 6662 ===&lt;br /&gt;
Small, quiet rustling.&lt;br /&gt;
&lt;br /&gt;
=== 6663 ===&lt;br /&gt;
Placing something, with rustling after.&lt;br /&gt;
&lt;br /&gt;
=== 6664 ===&lt;br /&gt;
Something not too heavy falling and hitting something.&lt;br /&gt;
&lt;br /&gt;
=== 6665 ===&lt;br /&gt;
High-pitched sound (map G01P05C, [[Acting Scene]] m07a1001).&lt;br /&gt;
&lt;br /&gt;
=== 6667 ===&lt;br /&gt;
Turning a page?&lt;br /&gt;
&lt;br /&gt;
=== 6669 ===&lt;br /&gt;
(Loop) Crowd talking/discussing.&lt;br /&gt;
&lt;br /&gt;
=== 6671 ===&lt;br /&gt;
Placing a stone in a statue&#039;s chest.&lt;br /&gt;
&lt;br /&gt;
=== 6675 ===&lt;br /&gt;
Jumping into the sea/water.&lt;br /&gt;
&lt;br /&gt;
=== 6913 ===&lt;br /&gt;
Team Skull&#039;s noxious gas attack.&lt;br /&gt;
&lt;br /&gt;
=== 6914 ===&lt;br /&gt;
Low hitting the ground sound.&lt;br /&gt;
&lt;br /&gt;
=== 6915 ===&lt;br /&gt;
Very damp hit sound/mini explosion.&lt;br /&gt;
&lt;br /&gt;
=== 6916 ===&lt;br /&gt;
(Loop) Used in m10a0902.ssb and 10a0904.ssb, when the guild is running through Steam Cave to reach Fogbound Lake.&lt;br /&gt;
&lt;br /&gt;
=== 6917 ===&lt;br /&gt;
Hitting something/impact/crashing into small boxes.&lt;br /&gt;
&lt;br /&gt;
=== 6918 ===&lt;br /&gt;
Small explosion.&lt;br /&gt;
&lt;br /&gt;
=== 6919 ===&lt;br /&gt;
Something whimsical discharging after defeating Groudon.&lt;br /&gt;
&lt;br /&gt;
=== 6920 ===&lt;br /&gt;
Uxie releaving.&lt;br /&gt;
&lt;br /&gt;
=== 6921 ===&lt;br /&gt;
An electric device dropping sparks?&lt;br /&gt;
&lt;br /&gt;
=== 6922 ===&lt;br /&gt;
Cresselia fading away in dream sequence.&lt;br /&gt;
&lt;br /&gt;
=== 6923 ===&lt;br /&gt;
(Loop) Crowd understanding?&lt;br /&gt;
&lt;br /&gt;
=== 6924 ===&lt;br /&gt;
Attack sound, hitting something, almost a bit explosion-y.&lt;br /&gt;
&lt;br /&gt;
=== 6925 ===&lt;br /&gt;
Darkrai powering down?&lt;br /&gt;
&lt;br /&gt;
=== 6926 ===&lt;br /&gt;
Some sort of boss attacking, sounds kind of like Dimensional Scream.&lt;br /&gt;
&lt;br /&gt;
=== 6927 ===&lt;br /&gt;
Some sort of long whooosh sound similar to Dimensional Scream (map D12P41A, [[Acting Scene]] m12a1001).&lt;br /&gt;
&lt;br /&gt;
=== 6929 ===&lt;br /&gt;
(Loop) &lt;br /&gt;
&lt;br /&gt;
=== 6930 ===&lt;br /&gt;
Dialga thanks, Groudon scream.&lt;br /&gt;
&lt;br /&gt;
=== 6933 ===&lt;br /&gt;
Angry Dialga going GRROOOOOOH...!&lt;br /&gt;
&lt;br /&gt;
=== 6934 ===&lt;br /&gt;
Angry Dialga in distance.&lt;br /&gt;
&lt;br /&gt;
=== 7169 ===&lt;br /&gt;
Geyser.&lt;br /&gt;
&lt;br /&gt;
=== 7170 ===&lt;br /&gt;
Something falling, not hitting.&lt;br /&gt;
&lt;br /&gt;
=== 7171 ===&lt;br /&gt;
&amp;quot;Step away from the time gear!&amp;quot; Kinda also sounds like falling into water.&lt;br /&gt;
&lt;br /&gt;
=== 7172 ===&lt;br /&gt;
Short and sweet &amp;quot;hitting someone and striking them down&amp;quot; sound.&lt;br /&gt;
&lt;br /&gt;
=== 7173 ===&lt;br /&gt;
Falling into water? Maybe jumping into waterfall?&lt;br /&gt;
&lt;br /&gt;
=== 7174 ===&lt;br /&gt;
(Loop) &lt;br /&gt;
&lt;br /&gt;
=== 7175 ===&lt;br /&gt;
Short high generic ring for signaling that something happened because the player did something.&lt;br /&gt;
&lt;br /&gt;
=== 7176 ===&lt;br /&gt;
VERY LOUD high pitched &amp;quot;activation&amp;quot;-like sound (map D16P31A, [[Acting Scene]] m15a0601).&lt;br /&gt;
&lt;br /&gt;
=== 7177 ===&lt;br /&gt;
(Loop) Electrical discharging.&lt;br /&gt;
&lt;br /&gt;
=== 7178 ===&lt;br /&gt;
Fail-safe system, Mesprit, Short high pitched bell like sound (map D17P34A, [[Acting Scene]] m15b0906), being trapped?&lt;br /&gt;
&lt;br /&gt;
=== 7179 ===&lt;br /&gt;
Short and sweet hit sound.&lt;br /&gt;
&lt;br /&gt;
=== 7180 ===&lt;br /&gt;
Short and sharp impact, hitting something.&lt;br /&gt;
&lt;br /&gt;
=== 7181 ===&lt;br /&gt;
&amp;quot;Grovyle vanished!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 7182 ===&lt;br /&gt;
Siren (map G01P04A, [[Acting Scene]] m16a0601).&lt;br /&gt;
&lt;br /&gt;
=== 7183 ===&lt;br /&gt;
Falling down a trap door?&lt;br /&gt;
&lt;br /&gt;
=== 7185 ===&lt;br /&gt;
Tripping and hitting the floor?&lt;br /&gt;
&lt;br /&gt;
=== 7186 ===&lt;br /&gt;
(Loop) Sableye winking/gleaming.&lt;br /&gt;
&lt;br /&gt;
=== 7187 ===&lt;br /&gt;
Used in many places, sounds like a door being closed (but from context that doesn&#039;t fit).&lt;br /&gt;
&lt;br /&gt;
=== 7188 ===&lt;br /&gt;
Sableye winking, not looped. (Used in stockade scene?)&lt;br /&gt;
&lt;br /&gt;
=== 7193 ===&lt;br /&gt;
(Loop) &lt;br /&gt;
&lt;br /&gt;
=== 7194 ===&lt;br /&gt;
Dimensional Scream end?&lt;br /&gt;
&lt;br /&gt;
=== 7195 ===&lt;br /&gt;
Spiritomb running away, portal closing.&lt;br /&gt;
&lt;br /&gt;
=== 7196 ===&lt;br /&gt;
(Loop) Sableye group slashing trapped heroes.&lt;br /&gt;
&lt;br /&gt;
=== 7425 ===&lt;br /&gt;
Some boss Pokémon.&lt;br /&gt;
&lt;br /&gt;
=== 7426 ===&lt;br /&gt;
Dropping sometime again, this time shorter and more heavy.&lt;br /&gt;
&lt;br /&gt;
=== 7427 ===&lt;br /&gt;
Spiritomb &amp;quot;activating.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 7428 ===&lt;br /&gt;
Bees falling from the sky and attacking?&lt;br /&gt;
&lt;br /&gt;
=== 7429 ===&lt;br /&gt;
Weirdly high-pitched &amp;quot;earthquake&amp;quot; (associated with Spiritomb).&lt;br /&gt;
&lt;br /&gt;
=== 7430 ===&lt;br /&gt;
Gotta get out of here! Running away, short.&lt;br /&gt;
&lt;br /&gt;
=== 7431 ===&lt;br /&gt;
Placing something or removing it and doing something pretty significant.&lt;br /&gt;
&lt;br /&gt;
=== 7434 ===&lt;br /&gt;
Dark growl.&lt;br /&gt;
&lt;br /&gt;
=== 7435 ===&lt;br /&gt;
Celebi time travel sound? Sounds very similar to start of Dimensional Scream.&lt;br /&gt;
&lt;br /&gt;
=== 7437 ===&lt;br /&gt;
(Loop) &lt;br /&gt;
&lt;br /&gt;
=== 7438 ===&lt;br /&gt;
Glass breaking ([[Acting Scene]] m19b1008).&lt;br /&gt;
&lt;br /&gt;
=== 7440 ===&lt;br /&gt;
Time Gear removed.&lt;br /&gt;
&lt;br /&gt;
=== 7441 ===&lt;br /&gt;
Time Gear removed.&lt;br /&gt;
&lt;br /&gt;
=== 7442 ===&lt;br /&gt;
(Loop) Hard hits?&lt;br /&gt;
&lt;br /&gt;
=== 7443 ===&lt;br /&gt;
Rustling, bags?&lt;br /&gt;
&lt;br /&gt;
=== 7445 ===&lt;br /&gt;
Activating the Rainbow Stoneship.&lt;br /&gt;
&lt;br /&gt;
=== 7447 ===&lt;br /&gt;
Small people jumping and running away.&lt;br /&gt;
&lt;br /&gt;
=== 7449 ===&lt;br /&gt;
(Loop) &lt;br /&gt;
&lt;br /&gt;
=== 7450 ===&lt;br /&gt;
Rustling, searching for something.&lt;br /&gt;
&lt;br /&gt;
=== 7681 ===&lt;br /&gt;
(Loop) Charging up Dusknoir&#039;s mouth attack (map D28P44A, [[Acting Scene]] m25a0101).&lt;br /&gt;
&lt;br /&gt;
=== 7682 ===&lt;br /&gt;
&amp;quot;Now! Go!&amp;quot; (attacking Dusknoir), entering the portal?&lt;br /&gt;
&lt;br /&gt;
=== 7683 ===&lt;br /&gt;
Yet another &amp;quot;fade to white&amp;quot; sort of sound (map D28P44A, [[Acting Scene]] m25a0101).&lt;br /&gt;
&lt;br /&gt;
=== 7684 ===&lt;br /&gt;
Dialga collapsing?&lt;br /&gt;
&lt;br /&gt;
=== 7686 ===&lt;br /&gt;
Being struck down.&lt;br /&gt;
&lt;br /&gt;
=== 7687 ===&lt;br /&gt;
A stack of wooden blocks falling over?&lt;br /&gt;
&lt;br /&gt;
=== 7688 ===&lt;br /&gt;
Grovyle doing something? &amp;quot;Fade to white&amp;quot; kind of sound.&lt;br /&gt;
&lt;br /&gt;
=== 7689 ===&lt;br /&gt;
Sound like &amp;quot;loading&amp;quot;/charging a portal? (map D28P33A, [[Acting Scene]] m25a0401)&lt;br /&gt;
&lt;br /&gt;
=== 7690 ===&lt;br /&gt;
Dialga being Dialga. Sounds like a short strong attack.&lt;br /&gt;
&lt;br /&gt;
=== 7691 ===&lt;br /&gt;
(Loop) Electrical discharge, more intense.&lt;br /&gt;
&lt;br /&gt;
=== 7692 ===&lt;br /&gt;
Fire blasting? &amp;quot;It&#039;s incredible! Red clouds are swirling!&amp;quot; (map D30P41A, [[Acting Scene]] m25a1101)&lt;br /&gt;
&lt;br /&gt;
=== 7693 ===&lt;br /&gt;
Loud lightning sound, used on Temporal Tower.&lt;br /&gt;
&lt;br /&gt;
=== 7937 ===&lt;br /&gt;
Falling in a trap.&lt;br /&gt;
&lt;br /&gt;
=== 7938 ===&lt;br /&gt;
Running away quickly.&lt;br /&gt;
&lt;br /&gt;
=== 7939 ===&lt;br /&gt;
Falling into a pit?&lt;br /&gt;
&lt;br /&gt;
=== 7940 ===&lt;br /&gt;
(Loop) Something related to Grand Master, something going wrong/Bidoof taking off the leaf cover&lt;br /&gt;
&lt;br /&gt;
=== 7941 ===&lt;br /&gt;
Explosion.&lt;br /&gt;
&lt;br /&gt;
=== 7942 ===&lt;br /&gt;
Disarming pitfall?&lt;br /&gt;
&lt;br /&gt;
=== 7944 ===&lt;br /&gt;
(Loop) Happy and clapping.&lt;br /&gt;
&lt;br /&gt;
=== 7947 ===&lt;br /&gt;
Crashing into something, destroying some things.&lt;br /&gt;
&lt;br /&gt;
=== 7948 ===&lt;br /&gt;
(Loop) Very low short buzzing sounds, something with Unown stones (map D32P12A, [[Acting Scene]] s04p0801).&lt;br /&gt;
&lt;br /&gt;
=== 7949 ===&lt;br /&gt;
Crossing the sea of time, something deep and slowly charging.&lt;br /&gt;
&lt;br /&gt;
=== 7950 ===&lt;br /&gt;
(Loop) Aura / light affecting the player? Evolution sequence related?&lt;br /&gt;
&lt;br /&gt;
=== 7951 ===&lt;br /&gt;
Some like engulfing the player, related to and plays after 7950.&lt;br /&gt;
&lt;br /&gt;
=== 7952 ===&lt;br /&gt;
Before fighting Dialga or another boss?&lt;br /&gt;
&lt;br /&gt;
=== 7953 ===&lt;br /&gt;
Hitting through! Regigigas attacks?&lt;br /&gt;
&lt;br /&gt;
=== 7954 ===&lt;br /&gt;
Flute-like noise.&lt;br /&gt;
&lt;br /&gt;
=== 7956 ===&lt;br /&gt;
Breaking crystals?&lt;br /&gt;
&lt;br /&gt;
=== 7957 ===&lt;br /&gt;
Egg sound, kinda sounds like a &amp;quot;Confirm/OK&amp;quot; menu sound.&lt;br /&gt;
&lt;br /&gt;
=== 7958 ===&lt;br /&gt;
According to the game, this is what an egg hatching sounds like.&lt;br /&gt;
&lt;br /&gt;
=== 8194 ===&lt;br /&gt;
Very interesting getting loot/opening treasure box sound (map D80P41A, [[Acting Scene]] m99a0129).&lt;br /&gt;
&lt;br /&gt;
=== 8195 ===&lt;br /&gt;
Being sent into a dream.&lt;br /&gt;
&lt;br /&gt;
=== 8196 ===&lt;br /&gt;
Dialga attacking, &amp;quot;fade to white&amp;quot;-like.&lt;br /&gt;
&lt;br /&gt;
=== 8197 ===&lt;br /&gt;
Dark pulsing.&lt;br /&gt;
&lt;br /&gt;
=== 8198 ===&lt;br /&gt;
Wipe + interference sound?&lt;br /&gt;
&lt;br /&gt;
=== 8199 ===&lt;br /&gt;
Cresselia.&lt;br /&gt;
&lt;br /&gt;
=== 8200 ===&lt;br /&gt;
Dialga making some sound, also used for teleporting maybe?&lt;br /&gt;
&lt;br /&gt;
=== 8201 ===&lt;br /&gt;
Something happening in a Palkia cutscene, high pitched whoosh, slow.&lt;br /&gt;
&lt;br /&gt;
=== 8454 ===&lt;br /&gt;
(Loop) The light that swallows the hero at the end of the main story.&lt;br /&gt;
&lt;br /&gt;
=== 8455 ===&lt;br /&gt;
The planet slowly falling apart.&lt;br /&gt;
&lt;br /&gt;
=== 8458 ===&lt;br /&gt;
Yet another whoosh like Time Gear Dialga thing.&lt;br /&gt;
&lt;br /&gt;
=== 8459 ===&lt;br /&gt;
Another sound in the player&#039;s disappearing sequence at the end of main game.&lt;br /&gt;
&lt;br /&gt;
=== 8462 ===&lt;br /&gt;
Placing all the time gears.&lt;br /&gt;
&lt;br /&gt;
=== 8705 ===&lt;br /&gt;
Beam-like attack hitting glass, Groudon?&lt;br /&gt;
&lt;br /&gt;
=== 8706 ===&lt;br /&gt;
Some sort of sound related to Cresselia (map D41P41A, [[Acting Scene]] s22p1401).&lt;br /&gt;
&lt;br /&gt;
=== 8707 ===&lt;br /&gt;
There is no escape! Being attacked like fade to white sound, Darkrai attacking?&lt;br /&gt;
&lt;br /&gt;
=== 8708 ===&lt;br /&gt;
(Loop) Long charging + &amp;quot;ready to fire now&amp;quot; sound.&lt;br /&gt;
&lt;br /&gt;
=== 8710 ===&lt;br /&gt;
Giving an item.&lt;br /&gt;
&lt;br /&gt;
=== 8711 ===&lt;br /&gt;
Wigglytuff&#039;s door opening (such as in Chapter 2).&lt;br /&gt;
&lt;br /&gt;
=== 8712 ===&lt;br /&gt;
(Loop) Reading aura in personality quiz.&lt;br /&gt;
&lt;br /&gt;
=== 8713 ===&lt;br /&gt;
Collecting coins.&lt;br /&gt;
&lt;br /&gt;
=== 8714 ===&lt;br /&gt;
Ingesting.&lt;br /&gt;
&lt;br /&gt;
=== 8715 ===&lt;br /&gt;
Xatu&#039;s screech.&lt;br /&gt;
&lt;br /&gt;
=== 8717 ===&lt;br /&gt;
Baton Pass.&lt;br /&gt;
&lt;br /&gt;
=== 8718 ===&lt;br /&gt;
Swap Shop.&lt;br /&gt;
&lt;br /&gt;
=== 8719 ===&lt;br /&gt;
(Loop)&lt;br /&gt;
&lt;br /&gt;
=== 8720 ===&lt;br /&gt;
Belly/Hungry, often used with actor effect SetEffect(88, 3);&lt;br /&gt;
&lt;br /&gt;
=== 8721 ===&lt;br /&gt;
Something&#039;s stirring... (spending too much time on dungeon floor)&lt;br /&gt;
&lt;br /&gt;
=== 8722 ===&lt;br /&gt;
It&#039;s getting closer... (spending too much time on dungeon floor)&lt;br /&gt;
&lt;br /&gt;
=== 8961 ===&lt;br /&gt;
Sweat drop sound, to be used with actor effect SetEffect(92, 3); This one is for the &#039;&#039;&#039;slow drop from the side&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 8962 ===&lt;br /&gt;
Question. Confused. Wondering. To be used with actor effect SetEffect(89, 3);&lt;br /&gt;
&lt;br /&gt;
=== 8964 ===&lt;br /&gt;
Exclamation mark. Noticing. To be used with actor effect SetEffect(88, 3);&lt;br /&gt;
&lt;br /&gt;
=== 8965 ===&lt;br /&gt;
Surprised, higher pitched, to be used with actor effect SetEffect(88, 3);&lt;br /&gt;
&lt;br /&gt;
=== 8966 ===&lt;br /&gt;
Making a discovery.&lt;br /&gt;
&lt;br /&gt;
=== 8967 ===&lt;br /&gt;
Short, &amp;quot;noticing something&amp;quot;, &amp;quot;Hey!&amp;quot;, &amp;quot;Oh, I remember&amp;quot;, sound, used with actor effect SetEffect(88, 3); or  SetEffect(91, 3);&lt;br /&gt;
&lt;br /&gt;
=== 8968 ===&lt;br /&gt;
Shocked! To be used with actor effect SetEffect(91, 3);&lt;br /&gt;
&lt;br /&gt;
=== 8970 ===&lt;br /&gt;
Loudred angry, wake up? Maybe generic angry? It&#039;s twice. Used with ExecuteCommon(CORO_JUMP_ANGRY_FUNC_SERIES, 0);&lt;br /&gt;
&lt;br /&gt;
=== 8971 ===&lt;br /&gt;
Angry, used with actor effect SetEffect(94, 3);&lt;br /&gt;
&lt;br /&gt;
=== 8972 ===&lt;br /&gt;
Sweat drop, being surprised, &amp;quot;stunned&amp;quot; sort of sound, used with actor effect SetEffect(171, 3); This one is for the &#039;&#039;&#039;multiple small drops&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== 8973 ===&lt;br /&gt;
Surprise? Being found out? Used with SetEffect(448, 3); or SetEffect(88, 3);&lt;br /&gt;
&lt;br /&gt;
=== 8974 ===&lt;br /&gt;
Surprised, to be used with actor execute common: ExecuteCommon(CORO_JUMP_SURPRISE_FUNC_SERIES, 0)&lt;br /&gt;
&lt;br /&gt;
=== 8975 ===&lt;br /&gt;
Hush! Angry! Annoyed! Used with ExecuteCommon(CORO_JUMP_ANGRY_FUNC_SERIES, 0);&lt;br /&gt;
&lt;br /&gt;
=== 8976 ===&lt;br /&gt;
Bell.&lt;br /&gt;
&lt;br /&gt;
=== 8977 ===&lt;br /&gt;
Some sort of noise, not sure where it&#039;s from?&lt;br /&gt;
&lt;br /&gt;
=== 8978 ===&lt;br /&gt;
Being noticed, &amp;quot;Hey!&amp;quot;. To be used with actor effect SetEffect(174, 3); or SetEffect(88, 3);&lt;br /&gt;
&lt;br /&gt;
=== 8979 ===&lt;br /&gt;
Title reveal. Only used in Explorers of Time and Darkness.&lt;br /&gt;
&lt;br /&gt;
=== 9217 ===&lt;br /&gt;
Dialga growling.&lt;br /&gt;
&lt;br /&gt;
=== 9218 ===&lt;br /&gt;
Short buzzing with a small whoosh.&lt;br /&gt;
&lt;br /&gt;
=== 9219 ===&lt;br /&gt;
Start of almost a jingle related to the Wigglytuff Guild rules (map D42P41A, [[Acting Scene]] n01a1904, Special Episode 1).&lt;br /&gt;
&lt;br /&gt;
=== 9220 ===&lt;br /&gt;
Part of the above jingle/chime.&lt;br /&gt;
&lt;br /&gt;
=== 9221 ===&lt;br /&gt;
&amp;quot;Three! Smiles go for miles!&amp;quot; Continuation of the above jingle.&lt;br /&gt;
&lt;br /&gt;
=== 9222 ===&lt;br /&gt;
Continuation of that jingle/chime thing, the end.&lt;br /&gt;
&lt;br /&gt;
=== 9223 ===&lt;br /&gt;
Either playing wooden drums or large wooden blocks falling over, or something like that.&lt;br /&gt;
&lt;br /&gt;
=== 9224 ===&lt;br /&gt;
Sleepy Jirachi.&lt;br /&gt;
&lt;br /&gt;
=== 9225 ===&lt;br /&gt;
Something &amp;quot;charging up&amp;quot;, getting more intense, used in Bidoof Special Episode.&lt;br /&gt;
&lt;br /&gt;
=== 9226 ===&lt;br /&gt;
Jirachi doing something.&lt;br /&gt;
&lt;br /&gt;
=== 9227 ===&lt;br /&gt;
Jirachi appearing.&lt;br /&gt;
&lt;br /&gt;
=== 9474 ===&lt;br /&gt;
Ominous growl of some legendary.&lt;br /&gt;
&lt;br /&gt;
=== 9475 ===&lt;br /&gt;
Something happening, mix of whoosh and wind like sound with a bit of a chime, after that: Get out of here.&lt;br /&gt;
&lt;br /&gt;
=== 9477 ===&lt;br /&gt;
Short, relatively quiet, rustling.&lt;br /&gt;
&lt;br /&gt;
=== 9478 ===&lt;br /&gt;
Being struck down, short and sweet...? Or maybe used for something else? (map D43P31A, [[Acting Scene]] n02a0901).&lt;br /&gt;
&lt;br /&gt;
{{NavScriptTerms}}&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Extra_Overlay_Areas&amp;diff=922</id>
		<title>Extra Overlay Areas</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Extra_Overlay_Areas&amp;diff=922"/>
		<updated>2025-01-04T09:55:03Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add PartyUpdatesMap (provisional)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page keeps track of the areas inside overlay_0036.bin (the extra overlay added by the [[ExtraSpace]] patch) that have been assigned to ASM patches.&lt;br /&gt;
&lt;br /&gt;
If you want to make an ASM patch that needs extra space, you can request an area in the overlay by asking [[User:Frostbyte|Frostbyte]]. Make sure to know how much space you will need beforehand. Also please add a .area directive that includes the start and end address of your area after it’s assigned so you don’t accidentally overflow it (&amp;lt;code&amp;gt;.area endAddress - startAddress&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
You can request the space assigned to your patch to be increased as long as there’s some free space after its section. If there’s not enough space before the next entry begins, you will have to request a new area and add the new extra code there.&lt;br /&gt;
&lt;br /&gt;
An area that has already been assigned can never be unassigned nor reassigned, even if it’s no longer needed by the hack that requested it. This rule is needed since some people might have an old version of a patch that still needs that area.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Area (inclusive - exclusive)&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Patch&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|0x0 - 0x4&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Magic number 0xBAADF00D (little-endian)&lt;br /&gt;
|-&lt;br /&gt;
|0x4 - 0x10&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Reserved&lt;br /&gt;
|-&lt;br /&gt;
|0x10 - 0x480&lt;br /&gt;
|CompleteTeamControl&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x500 - 0x62C&lt;br /&gt;
|MoveShortcuts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x700 - 0x744&lt;br /&gt;
|HeroFaintKick&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x780 - 0x814&lt;br /&gt;
|FixMemorySoftlock&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x830 - 0x878&lt;br /&gt;
|DynamicBossesEverywhere&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x8B0 - 0x9B0&lt;br /&gt;
|RevampEggStarters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xA00 - 0xA30&lt;br /&gt;
|PitfallTrapTweak&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xA70 - 0xAEC&lt;br /&gt;
|BoldText&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xB20 - 0xB7C&lt;br /&gt;
|ChangeTextSound&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xBC0 - 0xC10&lt;br /&gt;
|AntiSoftlock&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xC40 - 0xCC0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Static init address array&#039;&#039;&#039;: 32 pointers to functions that will be called when the overlay is loaded. Null pointers are skipped.&lt;br /&gt;
&lt;br /&gt;
Other projects that use this overlay and need to perform some sort of initialization should add a pointer to their init function on the first empty slot in this array.&lt;br /&gt;
|-&lt;br /&gt;
|0xD00 - 0xD80&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Static init ID array&#039;&#039;&#039;: 32 integers used to identify which project is making use of each of the 32 entries in the static init address array. Each project should have an unique ID. 0 if an entry is unused.&lt;br /&gt;
&lt;br /&gt;
Projects must check these IDs to ensure they don’t overwrite an entry from another project. They must also make sure to remove their old entries (for example, if the location of the project’s init function changes) so the game doesn’t jump to outdated / invalid addresses.&lt;br /&gt;
|-&lt;br /&gt;
|0xE00 - 0x1120&lt;br /&gt;
|PushAllies&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x11A0 - 0x12F0&lt;br /&gt;
|BetterEnemyEvolution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1380 - 0x13B8&lt;br /&gt;
|NoWeatherStop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x13F0 - 0x1400&lt;br /&gt;
|UnusedDungeonChance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1420 - 0x17BC&lt;br /&gt;
|FixMemorySoftlock&lt;br /&gt;
|&amp;gt;= v2.0&lt;br /&gt;
|-&lt;br /&gt;
|0x1840 - 0x1888&lt;br /&gt;
|MoreSamplesAndPresets&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18B0 - 0x18E0&lt;br /&gt;
|AddKeyCheck&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18F0 - 0x1958&lt;br /&gt;
|DisplayScriptVariable&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1970 - 0x1A2C&lt;br /&gt;
|ChangePortraitMidText&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1A60 - 0x1B60&lt;br /&gt;
|MoreAudioMemory&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1B70 - 0x1B90&lt;br /&gt;
|TeamStatsPain&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1BA0 - 0x1BF4&lt;br /&gt;
|FixNo$GbaSaves&lt;br /&gt;
|&amp;gt;= v1.0&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;0x1C00 - 0x1C20&#039;&#039;&lt;br /&gt;
|&#039;&#039;PartyUpdatesMap&#039;&#039;&lt;br /&gt;
|&#039;&#039;(Provisional)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|0x30F70 - 0x38F80&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Common area&#039;&#039;&#039;: Anyone can use this space however they want without having to request an area. Useful if you don’t care about compatibility with other patches that might use this space. For example, this can be used if you need some space for a patch that is only going to be used in a certain ROM hack.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Extra_Overlay_Areas&amp;diff=921</id>
		<title>Extra Overlay Areas</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Extra_Overlay_Areas&amp;diff=921"/>
		<updated>2025-01-04T09:53:15Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add FixNo$GbaSaves patch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page keeps track of the areas inside overlay_0036.bin (the extra overlay added by the [[ExtraSpace]] patch) that have been assigned to ASM patches.&lt;br /&gt;
&lt;br /&gt;
If you want to make an ASM patch that needs extra space, you can request an area in the overlay by asking [[User:Frostbyte|Frostbyte]]. Make sure to know how much space you will need beforehand. Also please add a .area directive that includes the start and end address of your area after it’s assigned so you don’t accidentally overflow it (&amp;lt;code&amp;gt;.area endAddress - startAddress&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
You can request the space assigned to your patch to be increased as long as there’s some free space after its section. If there’s not enough space before the next entry begins, you will have to request a new area and add the new extra code there.&lt;br /&gt;
&lt;br /&gt;
An area that has already been assigned can never be unassigned nor reassigned, even if it’s no longer needed by the hack that requested it. This rule is needed since some people might have an old version of a patch that still needs that area.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Area (inclusive - exclusive)&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Patch&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|0x0 - 0x4&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Magic number 0xBAADF00D (little-endian)&lt;br /&gt;
|-&lt;br /&gt;
|0x4 - 0x10&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Reserved&lt;br /&gt;
|-&lt;br /&gt;
|0x10 - 0x480&lt;br /&gt;
|CompleteTeamControl&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x500 - 0x62C&lt;br /&gt;
|MoveShortcuts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x700 - 0x744&lt;br /&gt;
|HeroFaintKick&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x780 - 0x814&lt;br /&gt;
|FixMemorySoftlock&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x830 - 0x878&lt;br /&gt;
|DynamicBossesEverywhere&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x8B0 - 0x9B0&lt;br /&gt;
|RevampEggStarters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xA00 - 0xA30&lt;br /&gt;
|PitfallTrapTweak&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xA70 - 0xAEC&lt;br /&gt;
|BoldText&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xB20 - 0xB7C&lt;br /&gt;
|ChangeTextSound&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xBC0 - 0xC10&lt;br /&gt;
|AntiSoftlock&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xC40 - 0xCC0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Static init address array&#039;&#039;&#039;: 32 pointers to functions that will be called when the overlay is loaded. Null pointers are skipped.&lt;br /&gt;
&lt;br /&gt;
Other projects that use this overlay and need to perform some sort of initialization should add a pointer to their init function on the first empty slot in this array.&lt;br /&gt;
|-&lt;br /&gt;
|0xD00 - 0xD80&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Static init ID array&#039;&#039;&#039;: 32 integers used to identify which project is making use of each of the 32 entries in the static init address array. Each project should have an unique ID. 0 if an entry is unused.&lt;br /&gt;
&lt;br /&gt;
Projects must check these IDs to ensure they don’t overwrite an entry from another project. They must also make sure to remove their old entries (for example, if the location of the project’s init function changes) so the game doesn’t jump to outdated / invalid addresses.&lt;br /&gt;
|-&lt;br /&gt;
|0xE00 - 0x1120&lt;br /&gt;
|PushAllies&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x11A0 - 0x12F0&lt;br /&gt;
|BetterEnemyEvolution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1380 - 0x13B8&lt;br /&gt;
|NoWeatherStop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x13F0 - 0x1400&lt;br /&gt;
|UnusedDungeonChance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1420 - 0x17BC&lt;br /&gt;
|FixMemorySoftlock&lt;br /&gt;
|&amp;gt;= v2.0&lt;br /&gt;
|-&lt;br /&gt;
|0x1840 - 0x1888&lt;br /&gt;
|MoreSamplesAndPresets&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18B0 - 0x18E0&lt;br /&gt;
|AddKeyCheck&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18F0 - 0x1958&lt;br /&gt;
|DisplayScriptVariable&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1970 - 0x1A2C&lt;br /&gt;
|ChangePortraitMidText&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1A60 - 0x1B60&lt;br /&gt;
|MoreAudioMemory&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1B70 - 0x1B90&lt;br /&gt;
|TeamStatsPain&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1BA0 - 0x1BF4&lt;br /&gt;
|FixNo$GbaSaves&lt;br /&gt;
|&amp;gt;= v1.0&lt;br /&gt;
|-&lt;br /&gt;
|0x30F70 - 0x38F80&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Common area&#039;&#039;&#039;: Anyone can use this space however they want without having to request an area. Useful if you don’t care about compatibility with other patches that might use this space. For example, this can be used if you need some space for a patch that is only going to be used in a certain ROM hack.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=919</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=919"/>
		<updated>2024-12-27T16:35:50Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditExtraPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
Unfortunately, this is not inside the script engine and is hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices, however, can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[FAQ#Problems ROM patching|ROM Patching]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando that can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no real reason to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. If you want to try it out it’s recommended to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=916</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=916"/>
		<updated>2024-12-16T16:41:14Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Note that performance progress flag 20 is also needed to add the player and partner back to the team&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditExtraPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
Unfortunately, this is not inside the script engine and is hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices, however, can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled.&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[FAQ#Problems ROM patching|ROM Hacking]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando that can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no real reason to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. If you want to try it out it’s recommended to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Extra_Overlay_Areas&amp;diff=912</id>
		<title>Extra Overlay Areas</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Extra_Overlay_Areas&amp;diff=912"/>
		<updated>2024-12-08T13:45:27Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Confirm TeamStatsPain&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page keeps track of the areas inside overlay_0036.bin (the extra overlay added by the [[ExtraSpace]] patch) that have been assigned to ASM patches.&lt;br /&gt;
&lt;br /&gt;
If you want to make an ASM patch that needs extra space, you can request an area in the overlay by asking [[User:Frostbyte|Frostbyte]]. Make sure to know how much space you will need beforehand. Also please add a .area directive that includes the start and end address of your area after it’s assigned so you don’t accidentally overflow it (&amp;lt;code&amp;gt;.area endAddress - startAddress&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
You can request the space assigned to your patch to be increased as long as there’s some free space after its section. If there’s not enough space before the next entry begins, you will have to request a new area and add the new extra code there.&lt;br /&gt;
&lt;br /&gt;
An area that has already been assigned can never be unassigned nor reassigned, even if it’s no longer needed by the hack that requested it. This rule is needed since some people might have an old version of a patch that still needs that area.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Area (inclusive - exclusive)&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Patch&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|0x0 - 0x4&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Magic number 0xBAADF00D (little-endian)&lt;br /&gt;
|-&lt;br /&gt;
|0x4 - 0x10&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Reserved&lt;br /&gt;
|-&lt;br /&gt;
|0x10 - 0x480&lt;br /&gt;
|CompleteTeamControl&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x500 - 0x62C&lt;br /&gt;
|MoveShortcuts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x700 - 0x744&lt;br /&gt;
|HeroFaintKick&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x780 - 0x814&lt;br /&gt;
|FixMemorySoftlock&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x830 - 0x878&lt;br /&gt;
|DynamicBossesEverywhere&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x8B0 - 0x9B0&lt;br /&gt;
|RevampEggStarters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xA00 - 0xA30&lt;br /&gt;
|PitfallTrapTweak&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xA70 - 0xAEC&lt;br /&gt;
|BoldText&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xB20 - 0xB7C&lt;br /&gt;
|ChangeTextSound&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xBC0 - 0xC10&lt;br /&gt;
|AntiSoftlock&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xC40 - 0xCC0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Static init address array&#039;&#039;&#039;: 32 pointers to functions that will be called when the overlay is loaded. Null pointers are skipped.&lt;br /&gt;
&lt;br /&gt;
Other projects that use this overlay and need to perform some sort of initialization should add a pointer to their init function on the first empty slot in this array.&lt;br /&gt;
|-&lt;br /&gt;
|0xD00 - 0xD80&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Static init ID array&#039;&#039;&#039;: 32 integers used to identify which project is making use of each of the 32 entries in the static init address array. Each project should have an unique ID. 0 if an entry is unused.&lt;br /&gt;
&lt;br /&gt;
Projects must check these IDs to ensure they don’t overwrite an entry from another project. They must also make sure to remove their old entries (for example, if the location of the project’s init function changes) so the game doesn’t jump to outdated / invalid addresses.&lt;br /&gt;
|-&lt;br /&gt;
|0xE00 - 0x1120&lt;br /&gt;
|PushAllies&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x11A0 - 0x12F0&lt;br /&gt;
|BetterEnemyEvolution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1380 - 0x13B8&lt;br /&gt;
|NoWeatherStop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x13F0 - 0x1400&lt;br /&gt;
|UnusedDungeonChance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1420 - 0x17BC&lt;br /&gt;
|FixMemorySoftlock&lt;br /&gt;
|&amp;gt;= v2.0&lt;br /&gt;
|-&lt;br /&gt;
|0x1840 - 0x1888&lt;br /&gt;
|MoreSamplesAndPresets&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18B0 - 0x18E0&lt;br /&gt;
|AddKeyCheck&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18F0 - 0x1958&lt;br /&gt;
|DisplayScriptVariable&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1970 - 0x1A2C&lt;br /&gt;
|ChangePortraitMidText&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1A60 - 0x1B60&lt;br /&gt;
|MoreAudioMemory&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1B70 - 0x1B90&lt;br /&gt;
|TeamStatsPain&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x30F70 - 0x38F80&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Common area&#039;&#039;&#039;: Anyone can use this space however they want without having to request an area. Useful if you don’t care about compatibility with other patches that might use this space. For example, this can be used if you need some space for a patch that is only going to be used in a certain ROM hack.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Extra_Overlay_Areas&amp;diff=911</id>
		<title>Extra Overlay Areas</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Extra_Overlay_Areas&amp;diff=911"/>
		<updated>2024-12-08T00:40:38Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add TeamStatsPain&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page keeps track of the areas inside overlay_0036.bin (the extra overlay added by the [[ExtraSpace]] patch) that have been assigned to ASM patches.&lt;br /&gt;
&lt;br /&gt;
If you want to make an ASM patch that needs extra space, you can request an area in the overlay by asking [[User:Frostbyte|Frostbyte]]. Make sure to know how much space you will need beforehand. Also please add a .area directive that includes the start and end address of your area after it’s assigned so you don’t accidentally overflow it (&amp;lt;code&amp;gt;.area endAddress - startAddress&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
You can request the space assigned to your patch to be increased as long as there’s some free space after its section. If there’s not enough space before the next entry begins, you will have to request a new area and add the new extra code there.&lt;br /&gt;
&lt;br /&gt;
An area that has already been assigned can never be unassigned nor reassigned, even if it’s no longer needed by the hack that requested it. This rule is needed since some people might have an old version of a patch that still needs that area.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;Area (inclusive - exclusive)&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Patch&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|0x0 - 0x4&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Magic number 0xBAADF00D (little-endian)&lt;br /&gt;
|-&lt;br /&gt;
|0x4 - 0x10&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|Reserved&lt;br /&gt;
|-&lt;br /&gt;
|0x10 - 0x480&lt;br /&gt;
|CompleteTeamControl&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x500 - 0x62C&lt;br /&gt;
|MoveShortcuts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x700 - 0x744&lt;br /&gt;
|HeroFaintKick&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x780 - 0x814&lt;br /&gt;
|FixMemorySoftlock&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x830 - 0x878&lt;br /&gt;
|DynamicBossesEverywhere&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x8B0 - 0x9B0&lt;br /&gt;
|RevampEggStarters&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xA00 - 0xA30&lt;br /&gt;
|PitfallTrapTweak&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xA70 - 0xAEC&lt;br /&gt;
|BoldText&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xB20 - 0xB7C&lt;br /&gt;
|ChangeTextSound&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xBC0 - 0xC10&lt;br /&gt;
|AntiSoftlock&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0xC40 - 0xCC0&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Static init address array&#039;&#039;&#039;: 32 pointers to functions that will be called when the overlay is loaded. Null pointers are skipped.&lt;br /&gt;
&lt;br /&gt;
Other projects that use this overlay and need to perform some sort of initialization should add a pointer to their init function on the first empty slot in this array.&lt;br /&gt;
|-&lt;br /&gt;
|0xD00 - 0xD80&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Static init ID array&#039;&#039;&#039;: 32 integers used to identify which project is making use of each of the 32 entries in the static init address array. Each project should have an unique ID. 0 if an entry is unused.&lt;br /&gt;
&lt;br /&gt;
Projects must check these IDs to ensure they don’t overwrite an entry from another project. They must also make sure to remove their old entries (for example, if the location of the project’s init function changes) so the game doesn’t jump to outdated / invalid addresses.&lt;br /&gt;
|-&lt;br /&gt;
|0xE00 - 0x1120&lt;br /&gt;
|PushAllies&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x11A0 - 0x12F0&lt;br /&gt;
|BetterEnemyEvolution&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1380 - 0x13B8&lt;br /&gt;
|NoWeatherStop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x13F0 - 0x1400&lt;br /&gt;
|UnusedDungeonChance&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1420 - 0x17BC&lt;br /&gt;
|FixMemorySoftlock&lt;br /&gt;
|&amp;gt;= v2.0&lt;br /&gt;
|-&lt;br /&gt;
|0x1840 - 0x1888&lt;br /&gt;
|MoreSamplesAndPresets&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18B0 - 0x18E0&lt;br /&gt;
|AddKeyCheck&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x18F0 - 0x1958&lt;br /&gt;
|DisplayScriptVariable&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1970 - 0x1A2C&lt;br /&gt;
|ChangePortraitMidText&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|0x1A60 - 0x1B60&lt;br /&gt;
|MoreAudioMemory&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;0x1B70 - 0x1B90&#039;&#039;&lt;br /&gt;
|&#039;&#039;TeamStatsPain&#039;&#039;&lt;br /&gt;
|&#039;&#039;(Provisional)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|0x30F70 - 0x38F80&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&#039;&#039;&#039;Common area&#039;&#039;&#039;: Anyone can use this space however they want without having to request an area. Useful if you don’t care about compatibility with other patches that might use this space. For example, this can be used if you need some space for a patch that is only going to be used in a certain ROM hack.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=910</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=910"/>
		<updated>2024-11-23T10:09:20Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add warning about starters being potentially removed from the team when evolved&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditExtraPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
Unfortunately, this is not inside the script engine and is hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices, however, can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Evolving your starters might cause them to be removed from the active team, and you can only add them back if [[Performance Progress Flags|performance progress flag 7]] is enabled.&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[FAQ#Problems ROM patching|ROM Hacking]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando that can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no real reason to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. If you want to try it out it’s recommended to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Performance_Progress_Flags&amp;diff=909</id>
		<title>Performance Progress Flags</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Performance_Progress_Flags&amp;diff=909"/>
		<updated>2024-11-23T10:07:27Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Document additional behavior for flag 7&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These flags are contained in the PERFORMANCE_PROGRESS_LIST [[List of Script Variables|variable]]. They are used to keep track of certain achievements and unlocks as the story progresses. Each flag is represented with a single bit, and therefore can only be true or false.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!ID&lt;br /&gt;
!Internal name&lt;br /&gt;
!Description&lt;br /&gt;
!Other comments&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Team name&lt;br /&gt;
|Controls if your team name is shown or just ???? in the menu&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Treasure Bag&lt;br /&gt;
|Bag is bigger than the &amp;quot;One-Item-Inventory&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Random Mission&lt;br /&gt;
|Must be enabled for random missions to generate&lt;br /&gt;
|Might have to do with being able to receive Wonder Mail S&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Friend Rescue&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Friends&lt;br /&gt;
|Pokémon show up in &amp;quot;Potential Recruits&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Evolution&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Formation Change&lt;br /&gt;
|Whether leader can be switched in dungeons. If 0, you get kicked out of the dungeon when your partner faints.&lt;br /&gt;
Also allows adding and removing the starters from the active team on Chimeco Assembly.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Move Alone / Training&lt;br /&gt;
|&lt;br /&gt;
|The list of internal names has an extra element that does not correspond to a flag somewhere around here. So the name for this flag could be either of those.&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Post ending&lt;br /&gt;
|Allows Pokémon that can&#039;t appear in missions during the story to appear in missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|Scenario Completion&lt;br /&gt;
|Player and partner can evolve&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|Dojo clear&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|Defeat Drowzee&lt;br /&gt;
|Clear mark: Drowzee apprehended&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|Defeat fake Groudon&lt;br /&gt;
|Clear mark: Mirage Groudon defeated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|Defeat Luxray&lt;br /&gt;
|Clear mark: Manectric&#039;s clan defeated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|Cleared Future World&lt;br /&gt;
|Clear mark: Escaped from the future&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|Defeat Dusknoir&lt;br /&gt;
|Clear mark: Dusknoir defeated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|Defeat Dialga&lt;br /&gt;
|Clear mark: Temporal Tower saved&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|Defeat Darkrai&lt;br /&gt;
|Clear mark: Darkrai banished&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|Defeat Regigigas&lt;br /&gt;
|Clear mark: Regigigas defeated&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|Guild Graduation&lt;br /&gt;
|Clear mark: Graduated from Wigglytuff&#039;s Guild&lt;br /&gt;
|Enables the Make Leader option in Chimeco assembly&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|Collect 7 Treasures&lt;br /&gt;
|Clear mark: Seven Treasures all obtained&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|Scizor ev. clear&lt;br /&gt;
|Clear mark: Met Scizor. Also grants Secret Rank.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|Get Manaphy&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|Manaphy ev. clear&lt;br /&gt;
|Clear mark: Manaphy arc completed&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|Go separately from Chatot&lt;br /&gt;
|Makes the Chatot guest slot for Brine Cave not appear even if the dungeon isn&#039;t cleared&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|Climbed Sky Peak&lt;br /&gt;
|Clear mark: Climbed Sky Peak. Also unlocks Sky Jukebox.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|Identify Waterfall&lt;br /&gt;
|Changes &amp;quot;Secret Waterfall&amp;quot; to &amp;quot;Waterfall Cave&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|Identify Quicksand&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|29&lt;br /&gt;
|&lt;br /&gt;
|The list of recruitable Pokémon is available from the menu&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|30&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|31&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Last flag that gets set when starting a new game with the &amp;quot;All complete&amp;quot; option. The rest might be unused.&lt;br /&gt;
Seems to be related to the Croagunk Swap Shop?&lt;br /&gt;
|-&lt;br /&gt;
|32&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|33&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|34&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|35&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|36&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|37&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|38&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|39&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|40&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|41&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|42&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|43&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|44&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|45&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|46&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|47&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|48&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|49&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|50&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|51&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|52&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|53&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|54&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|55&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|56&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|57&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|58&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|59&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|60&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|61&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|62&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|63&lt;br /&gt;
|&lt;br /&gt;
|Unused?&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
{{NavScriptTerms}}&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=907</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=907"/>
		<updated>2024-11-17T11:40:19Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Clarify that the debugger must be opened to edit a script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditExtraPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
Unfortunately, this is not inside the script engine and is hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices, however, can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Open [[Script Engine Debugger|the debugger]] and go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[FAQ#Problems ROM patching|ROM Hacking]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando that can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no real reason to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. If you want to try it out it’s recommended to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=905</id>
		<title>Frequently Asked Questions</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytemple.org/index.php?title=Frequently_Asked_Questions&amp;diff=905"/>
		<updated>2024-11-12T18:18:59Z</updated>

		<summary type="html">&lt;p&gt;Frostbyte: Add info about common softlocks and glitches&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This page contains some useful questions and answers about many different areas of SkyTemple and its community. Taking a quick look can be helpful if you plan to get started with ROM hacking.&lt;br /&gt;
&lt;br /&gt;
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the [[{{TALKPAGENAME}}|Discussion]] page to propose new questions or changes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple ==&lt;br /&gt;
&lt;br /&gt;
=== Where can I find the latest version of SkyTemple? ===&lt;br /&gt;
You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page].&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support 32 bit systems? ===&lt;br /&gt;
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is [https://download.skytemple.org/skytemple/1.4.7 1.4.7].&lt;br /&gt;
&lt;br /&gt;
=== I downloaded SkyTemple. How do I open it? ===&lt;br /&gt;
Look for your .exe (Windows) or .dmg (Mac) and the installation process should run. If you can’t find the .exe file, it might have been deleted or quarantined by your antivirus or Windows defender.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple set off my antivirus! Is it fine? ===&lt;br /&gt;
Yes, SkyTemple notoriously sets off false positives on antiviruses. This may also cause SkyTemple to be quarantined by your AV. Reporting false positives is appreciated to help make this issue go away.&lt;br /&gt;
&lt;br /&gt;
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? ===&lt;br /&gt;
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version [https://download.skytemple.org/skytemple/1.3.10 1.3.10] works on slightly older Mac versions.&lt;br /&gt;
&lt;br /&gt;
=== Is there any tutorial on how to use SkyTemple? ===&lt;br /&gt;
Right now we don’t have a general tutorial. You can read the [[FAQ#ROM hacking|ROM hacking]] section of this page to get an idea of what can be done right now. Most of SkyTemple’s features are easy to understand, so the best way to learn is by trying it out.&lt;br /&gt;
&lt;br /&gt;
[[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.&lt;br /&gt;
&lt;br /&gt;
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.&lt;br /&gt;
&lt;br /&gt;
=== How can I find out which SkyTemple version I have? ===&lt;br /&gt;
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.&lt;br /&gt;
&lt;br /&gt;
=== How can I update SkyTemple? ===&lt;br /&gt;
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Randomizer ==&lt;br /&gt;
&lt;br /&gt;
=== Can I use the Randomizer on Android? ===&lt;br /&gt;
The randomizer program itself does not support Android right now. However, the Randomizer outputs a .nds file, which will work with any DS emulator, including those on Android. If you would like to play a randomized game on Android, it is highly recommended that you randomize it on a computer, and then move the randomized file to your Android device.&lt;br /&gt;
&lt;br /&gt;
==== I don&#039;t have access to a computer! Is it still possible to randomize the game? ====&lt;br /&gt;
Yes. However, if you have any method of randomizing with a computer (such as having a friend do it for you), it is highly encouraged that you do so. If you have no other options, there is an outdated version of the SkyTemple Randomizer tool for Android. Be warned that:&lt;br /&gt;
&lt;br /&gt;
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.&lt;br /&gt;
* Since the Android version is discontinued and outdated, if you run into any bugs, they will not be fixed, as they likely already have been in newer versions that are only available on computer.&lt;br /&gt;
&lt;br /&gt;
The APK file for the last Android release of the Randomizer is available on the [https://download.skytemple.org/randomizer/1.3.2 official download page].&lt;br /&gt;
&lt;br /&gt;
=== After playing for a while, I decided I want to change some of the settings. Can I use the [[SkyTemple Randomizer|Randomizer]] to make that change without affecting anything else? ===&lt;br /&gt;
No. If you saved the settings and seed used for randomization, you could load them into the Randomizer, change whatever settings you want, and then randomize a new ROM with them. Although even if you do that, you&#039;ll likely get a completely different result.&lt;br /&gt;
&lt;br /&gt;
You should be able to reuse your previous save file, however.&lt;br /&gt;
&lt;br /&gt;
=== Can I randomize a ROM hack? ===&lt;br /&gt;
Maybe. If the hack has made important internal changes to the game, the Randomizer might not be able to randomize it. If you get errors, try disabling some of the options.&lt;br /&gt;
&lt;br /&gt;
=== I can&#039;t proceed into a dungeon from the crossroads! What&#039;s wrong? ===&lt;br /&gt;
This happens because your team exceeds the maximum body size of 6 stars. It can happen if both the player and the partner are large legendaries.&lt;br /&gt;
&lt;br /&gt;
Starting with version 2.0.1 of the randomizer, this shouldn&#039;t happen anymore, since the &#039;&#039;RemoveBodySizeCheck&#039;&#039; patch is applied by default.&lt;br /&gt;
&lt;br /&gt;
If you randomized the game with an older version, you have three options:&lt;br /&gt;
&lt;br /&gt;
* Download the latest version of the randomizer, and start a new run using that version.&lt;br /&gt;
* Restart with new starters that have a combined body size of 6 or less.&lt;br /&gt;
* Use [[SkyTemple]] to edit the body size of your starter and partner species so the total is less than 6 stars. Keep in mind that you may experience graphical glitches in dungeons, or even game crashes.&lt;br /&gt;
&lt;br /&gt;
== SkyTemple Discord server ==&lt;br /&gt;
&lt;br /&gt;
=== I have a question, where should I post it? ===&lt;br /&gt;
First you should check this page, as your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the [https://discord.com/invite/skytemple SkyTemple Discord] server and ask it in the right channel:&lt;br /&gt;
&lt;br /&gt;
* If you need help with anything (how to make changes to the game, how to create a rom hack, error messages, installation problems, etc.), create a thread in [https://discord.com/channels/710190644152369162/1019678574782988288 #support]&lt;br /&gt;
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in [https://discord.com/channels/710190644152369162/712341699292037121 #skytemple-project]&lt;br /&gt;
* If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion]&lt;br /&gt;
* If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general]&lt;br /&gt;
&lt;br /&gt;
=== How do I get [insert role here]? ===&lt;br /&gt;
You can get some roles by going to the “Channels and Roles” section of the server and answering the customization questions. You can find an explanation about how the most common roles in the server work in the #rules-and-roles channel. If you want to know how to get a role that isn’t listed there, ask the mods.&lt;br /&gt;
&lt;br /&gt;
=== How can I contact the server staff? ===&lt;br /&gt;
You can send a private message to @Magnezone, the modmail bot. A staff member will read it and will reply as soon as they can. Remember to be patient, don’t submit your question multiple times and don’t ping the mods if you don’t get an immediate response.&lt;br /&gt;
&lt;br /&gt;
== ROM hacking ==&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Editing Pokémon|Pokémon]]? ===&lt;br /&gt;
The easiest thing you can do is replace some of the unused slots with the new Pokémon you want to add. These are the slots that can be replaced:&lt;br /&gt;
&lt;br /&gt;
==== Unused Arceus forms ====&lt;br /&gt;
These slots are labeled “??????????”, and can be found in entries #537-551. They aren’t used anywhere so feel free to replace them with other Pokémon you want to add to the game.&lt;br /&gt;
&lt;br /&gt;
==== Unnecessary Unown forms ====&lt;br /&gt;
Only certain Unown letters are needed to complete Aegis Cave (specifically, letters I, C, E, R, O, K, S, T and L). If you need extra slots you can replace the rest of Unowns with something else. If you do it, make sure to remove them from Aegis Cave’s Pokémon spawn lists.&lt;br /&gt;
&lt;br /&gt;
==== Unused actors ====&lt;br /&gt;
These entries can be found at the bottom of the list, and are labeled “reserve_xx”. These entries can’t be used inside dungeons since they don’t have stats, so you can’t edit them to add new Pokémon, however they can be used as actors (NPCs) in [[Scene|cutscenes]].&lt;br /&gt;
&lt;br /&gt;
SkyTemple also includes the experimental [[ExpandPokeList]] [[ASM Patch|ASM patch]], which can be used to expand the available slots. Keep in mind that we still don&#039;t know if the patch can cause issues when applied, so it&#039;s advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.&lt;br /&gt;
&lt;br /&gt;
=== How do I add new [[Dungeon Properties|dungeons]]? ===&lt;br /&gt;
Adding new dungeons is impossible with current hacking knowledge. There is a set of unused Dummy dungeons at the bottom of the dungeon list that can be repurposed.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Item Data|items]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic item data (like the buy and sell price, category, sprite ID…) as well as item effects (the latter requires an ASM patch to be applied). You can use the “Items” menu for this.&lt;br /&gt;
&lt;br /&gt;
There&#039;s currently no dedicated UI to edit the effect of exclusive items, but you can use the [[Symbols]] editor to modify the raw data. The name of the symbol in question is &amp;lt;code&amp;gt;EXCLUSIVE_ITEM_EFFECT_DATA&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit [[Move Data|moves]]? ===&lt;br /&gt;
SkyTemple allows you to edit basic move data (like power, accuracy, type...) as well as move effects (HP heal, stat changes, chance to inflict status effects…) (the latter requires an ASM patch to be applied). You can use the “Moves” menu for this.&lt;br /&gt;
&lt;br /&gt;
=== Can new moves be added? ===&lt;br /&gt;
The move list cannot be expanded at the moment, but you can replace some of the unused moves (named [M:D1]). Keep in mind that not all the [M:D1] moves are unused. Here’s a list with the known [M:D1] moves:&lt;br /&gt;
&lt;br /&gt;
* 361: Excavate&lt;br /&gt;
* 362: Spin Slash&lt;br /&gt;
* 404: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 411: attack animation with no sound effect (safe to edit)&lt;br /&gt;
* 413: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 414: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 415: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 416: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 417: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 418: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 419: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 420: walking animation with no sound effect (safe to edit)&lt;br /&gt;
* 421: Secret Bazaar Escape&lt;br /&gt;
* 422: Secret Bazaar Cleanse&lt;br /&gt;
* 423: Secret Bazaar Healing Beam&lt;br /&gt;
* 424: Spurn Orb&lt;br /&gt;
* 425: Foe-Hold Orb&lt;br /&gt;
* 426: All-Mach Orb&lt;br /&gt;
* 427: Foe-Fear Orb&lt;br /&gt;
* 428: All-Hit Orb&lt;br /&gt;
* 429: Foe-Seal Orb&lt;br /&gt;
* 467: Judgement&lt;br /&gt;
* 543: Weather Ball Sun&lt;br /&gt;
* 544: Weather Ball Hail&lt;br /&gt;
* 545: Weather Ball Rain&lt;br /&gt;
* 546: Weather Ball Sandstorm&lt;br /&gt;
* 547: Dig second half&lt;br /&gt;
* 548: Razor Wind second half&lt;br /&gt;
* 549: Focus Punch second half&lt;br /&gt;
* 550: Sky Attack second half&lt;br /&gt;
* 551: SolarBeam second half&lt;br /&gt;
* 552: Fly second half&lt;br /&gt;
* 553: Dive second half&lt;br /&gt;
* 554: Bounce second half&lt;br /&gt;
* 555: Skull Bash second half&lt;br /&gt;
* 556: Ghost-type Curse animation&lt;br /&gt;
* 557: generic move sound effect&lt;br /&gt;
* 558: generic move sound effect&lt;br /&gt;
Of course, you could also replace existing moves. If you choose to do so, keep in mind that some moves have hardcoded checks that will cause problems if you replace them, so you should probably shouldn&#039;t touch those. Here&#039;s the list of moves with known hardcoded behavior:&lt;br /&gt;
&lt;br /&gt;
* 031: Weather Ball (has a special type check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 064: Thunder (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 229: Assist (has a special check to use another move after)&lt;br /&gt;
* 270: Blizzard (has a special accuracy check in &amp;lt;code&amp;gt;MoveHitCheck&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 324: Hidden Power (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
* 465: Me First (has a special check to use another move after, has move effect #325 by default)&lt;br /&gt;
* 471: Natural Gift (has a special check in &amp;lt;code&amp;gt;GetMoveTypeForMonster&amp;lt;/code&amp;gt;)&lt;br /&gt;
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)&lt;br /&gt;
&lt;br /&gt;
=== How can I edit the way an item / move effect works? ===&lt;br /&gt;
In order to do this you will have to write ASM code (you can also use the [https://asmeditor.skytemple.org/ EoS code editor] by Techticks if you prefer a GUI, although you should keep in mind that it’s a bit outdated and it’s missing many of the functions that have already been documented) and then import the .asm file as a move / item effect in SkyTemple with the “Import code” option found in the “[[Move Effect|Move effects]]” / “[[Item Effect|Item effects]]” menu.&lt;br /&gt;
&lt;br /&gt;
=== Can abilities be edited? Can new abilities be added? ===&lt;br /&gt;
Abilities are all hardcoded, so ASM hacking is necessary to edit them. New ones could be added in theory, since they are just an ID with some code that runs in a specific situation. However, setting a name and a description for them would be a problem since you can’t insert new strings in the area that contains those.&lt;br /&gt;
&lt;br /&gt;
=== Can the Fairy type be added? And what about adding even more types? ===&lt;br /&gt;
SkyTemple includes the [[AddTypes]] patch that can be applied to add the fairy type to the game. Adding more types would be more complicated, since there’s only one unused type string (neutral), which is replaced by fairy when applying the AddTypes patch.&lt;br /&gt;
&lt;br /&gt;
Even after applying the patch, you’ll still have to manually assign that type to Pokémon and moves, as well as implementing new moves yourself.&lt;br /&gt;
&lt;br /&gt;
=== Can Shiny Pokémon be added? ===&lt;br /&gt;
Shinies can be added as completely new species, usually by copying the data from a Pokémon into a new slot and then importing its shiny sprites. Since the amount of slots is limited (unless ExpandPokeList is used, [[Frequently Asked Questions#How do I add new Pokémon?|see above]]), adding shinies for all pokémon is unfeasible.&lt;br /&gt;
&lt;br /&gt;
Another problem about shinies is getting them to spawn in dungeons. The only way to do that would be manually adding them to the spawn list of every floor where you want them to spawn. It&#039;s also necessary to set their spawn weight. However, keep in mind that if there&#039;s more than 14 species on a floor, only 14 of them will spawn each time the player enters the floor, and the weight of the ones that were not chosen will be added to the ones that were. This can cause shinies to have a much larger spawn weight than what was originally intended.&lt;br /&gt;
&lt;br /&gt;
=== How can I edit boss battles? ===&lt;br /&gt;
Boss battles take place in [[Fixed Room|fixed rooms]] (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:&lt;br /&gt;
&lt;br /&gt;
You can’t add new fixed rooms, but you can replace some unused ones like #155 - 159. Fixed rooms starting after #164 are used for key doors and will be placed inside rooms in normal floors instead of taking the entire floor, so they can’t be used as boss fight rooms.&lt;br /&gt;
&lt;br /&gt;
The list of entities, Pokémon, items... that can be placed in fixed rooms (which you can edit by double clicking the “fixed rooms” option) can’t be expanded, so you will need to replace some entries there if you want to add new bosses. The Pokémon list has some unused Groudon entries starting at #101 that you can replace.&lt;br /&gt;
&lt;br /&gt;
HP is capped at 999, other stats cap at 255.&lt;br /&gt;
&lt;br /&gt;
=== When editing the music that plays on a dungeon floor, How do I know which songs are included in each of the random entries? Can these be edited? ===&lt;br /&gt;
You can use the &amp;quot;Go to&amp;quot; button under the music list (or manually navigate to &amp;quot;Lists &amp;gt; [[Dungeon Music List|Dungeon music]]&amp;quot;) to see and edit which 4 songs are included in each random entry (under the &amp;quot;Random music&amp;quot; tab).&lt;br /&gt;
&lt;br /&gt;
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? ===&lt;br /&gt;
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the &amp;quot;Lists &amp;gt; [[Guest Pokémon List|Guest Pokémon]]&amp;quot; menu, available after applying the [[EditExtraPokemon]] patch.&lt;br /&gt;
&lt;br /&gt;
=== How do I test later dungeons in the game? Can I jump ahead in the story? ===&lt;br /&gt;
When you start a new save with debugging mode enabled (“State / Debugging” tab on the left) you will see a textbox asking you if you want to do the personality test. If you select “No” you will get a menu you can use to start the game on a different chapter. You can check where each of the options will take you on the [[Debug Scene Selection Menu]] page. The “All complete” option will skip the entire story and unlock all the story dungeons.&lt;br /&gt;
&lt;br /&gt;
To start the game in a specific cutscene you will need to change a script. See “[[FAQ#Is there a way to jump to an exact script instead of the existing debug checkpoints?|Is there a way to jump to an exact script instead of the existing debug checkpoints?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
If you are going to test higher level dungeons you might want to change the starting level of the party. You can do this under “Ground lists” → “Starters”.&lt;br /&gt;
&lt;br /&gt;
=== Does SkyTemple support custom music/SFX? ===&lt;br /&gt;
SkyTemple itself does not support custom music or SFX. However, you can use [[SkySongBuilder]] to add new music to the game. We have [[SkySongBuilder Tutorial|a tutorial]] on how to do this.&lt;br /&gt;
&lt;br /&gt;
=== How do I edit the personality quiz? ===&lt;br /&gt;
Unfortunately, this is not inside the script engine and is hardcoded. You can individually change each question and answer in text strings, but not the test logic or weights assigned to each answer, or any other parts of it such as the background or BGM. Starter choices, however, can be modified in “Lists” → “[[Starter List|Starters]]”.&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? ===&lt;br /&gt;
Yes, you can apply the [[ChooseStarter]] patch to do this. If you also want to remove the personality test you can also apply the [[SkipQuiz]] patch.&lt;br /&gt;
&lt;br /&gt;
If you want to skip the quiz and force a specific player and partner combination, see “[[FAQ#Can I skip the personality test in my hack and just force a certain starting team?|Can I skip the personality test in my hack and just force a certain starting team?]]” in the scripting section.&lt;br /&gt;
&lt;br /&gt;
=== Can I expand the list of starters (e.g. to add starters from later generations?) ===&lt;br /&gt;
With vanilla methods, the length of the starter list cannot be changed. Pokémon can only be replaced in the list, not added to it. [https://github.com/Chesyon/StarterMenuTool StarterMenuTool] can be used as a workaround to recreate the starter menu with scripting, and it does not have the restrictions of the vanilla starter list.&lt;br /&gt;
&lt;br /&gt;
=== Can I unlock evolution earlier in the game? ===&lt;br /&gt;
Yes! This can be done by adding a single line of code to the game. Add this line to the script you&#039;d like to enable evolution in:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Refer to the [[List of Script Locations]] if you&#039;re looking for a particular scene in the game, and can&#039;t find the script. If you want to enable it at the very start of the game, you can add it to m01a0101.ssb. Note that this does not remove the evolution restriction from the hero/partner! This is a separate flag, which can be set with an additional line, alongside the prior one:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;$PERFORMANCE_PROGRESS_LIST[10] = 1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These lines must be placed within &amp;lt;code&amp;gt;def 0 {&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== How can I publish my hack so other people can play it? ===&lt;br /&gt;
You will need to create a patch containing the changes you have made to your ROM using an external tool. It’s recommended to specify which region&#039;s ROM you used as a base so others can apply the patch. If you are using an US ROM, please try to use a clean dump instead of the XenoPhobia version since patches aren’t compatible between the two (See also Rom patching under &amp;quot;[[FAQ#Common problems and solutions|Common problems and solutions]]&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
XDelta UI: https://www.romhacking.net/utilities/598/&lt;br /&gt;
&lt;br /&gt;
XDelta 3 (.exe only, can be used to replace the XDelta 2 .exe included in the XDelta UI download): https://github.com/jmacd/xdelta-gpl/releases&lt;br /&gt;
&lt;br /&gt;
Online patcher: https://www.marcrobledo.com/RomPatcher.js/&lt;br /&gt;
&lt;br /&gt;
== Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== Can dialogue/scenes be edited? How do I get started with it? ===&lt;br /&gt;
This kind of editing is known as [[Script|scripting]], since you will need to modify the game’s scripts. You can find a tutorial [https://www.youtube.com/watch?v=6SfThAf_sos here], and a playlist with multiple tutorials [https://www.youtube.com/playlist?list=PLeoQCzDApD5Kmp0eRA947oPelXunAtqWv here].&lt;br /&gt;
&lt;br /&gt;
=== Is there a way to jump to an exact script instead of the existing debug checkpoints? ===&lt;br /&gt;
In unionall.ssb, add in &amp;lt;code&amp;gt;CallCommon(CORO_DEBUG_SCENE);&amp;lt;/code&amp;gt; as the first line called within EVENT_DIVIDE. Once you start the game, you’ll get a menu where you will be able to choose which scene you want to play. Note that this menu only contains vanilla scripts, and will not contain any custom scripts that you may have added.&lt;br /&gt;
&lt;br /&gt;
If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]].&lt;br /&gt;
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]]&lt;br /&gt;
&lt;br /&gt;
=== Can I skip the personality test in my hack and just force a certain starting team? ===&lt;br /&gt;
Yes, in order to do this you will have to do two things:&lt;br /&gt;
&lt;br /&gt;
==== Change the default starters ====&lt;br /&gt;
Go to “Lists” → “Starters”, there you can set the default species and name for the player and the partner, as well as their starting levels.&lt;br /&gt;
&lt;br /&gt;
==== Skip the personality test ====&lt;br /&gt;
Go to script “S02P01A”, then under “[[Acting Scene|Acting (ssa)]]” open “m00a01a”. Scroll down until you see “case 28” (Should be line 270 if you haven’t made any changes to that file yet). Copy the contents of case 28 except its last line, which should be&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
debug_Print(&#039;DIAGNOSIS_BLACK2&#039;);&lt;br /&gt;
screen2_FadeOut(0, 0);&lt;br /&gt;
screen_FadeOutAll(1, 0);&lt;br /&gt;
back2_SetGround(LEVEL_S04P01A);&lt;br /&gt;
back_SetGround(LEVEL_S04P01A);&lt;br /&gt;
screen2_FadeIn(0, 30);&lt;br /&gt;
screen_FadeInAll(1, 30);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then go back up until you see &amp;lt;code&amp;gt;forever {&amp;lt;/code&amp;gt;, which should be on line 36. Select everything from that line to the line &amp;lt;code&amp;gt;switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }&amp;lt;/code&amp;gt;, (should be line 319) and delete it. Then paste the code you copied from case 28 where you deleted that chunk of code. You can optionally fix the indentation by pressing shift+tab a few times. Save the script and start a new game, the quiz will be automatically skipped and you will have the default player and partner as your team.&lt;br /&gt;
&lt;br /&gt;
=== What language are scripts written in? ===&lt;br /&gt;
Internally, scripts are stored in a binary format that uses .ssa/.ssb files. SkyTemple decompiles them to a custom language created by Capypara called [[ExplorerScript]] to make it easier to edit them and then compiles them back to the format used by the game. Check the [[ExplorerScript Reference|language reference]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Playing ROM hacks ==&lt;br /&gt;
&lt;br /&gt;
=== How can I play a ROM hack I downloaded? ===&lt;br /&gt;
ROM hacks are distributed as patches, usually in .xdelta format. To play them, you need your own unmodified copy of Explorers of Sky and a program to apply patches, such as [https://www.romhacking.net/utilities/598/ XDelta]. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;[[FAQ#Problems ROM patching|ROM Hacking]]&amp;quot; under &amp;quot;Common problems and solutions&amp;quot; for some common issues that you might experience while trying to apply a patch.&lt;br /&gt;
&lt;br /&gt;
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here].&lt;br /&gt;
&lt;br /&gt;
=== Where can I find already published hacks? ===&lt;br /&gt;
Check out the [http://hacks.skytemple.org/ SkyTemple hack directory]. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.&lt;br /&gt;
&lt;br /&gt;
=== Can I help testing rom hacks in development? ===&lt;br /&gt;
Yes! You can get the rom hack tester role yourself in the “Channels and Roles” section of the Discord server, which will give you access to a channel where rom hack creators ask for testers for their upcoming hacks.&lt;br /&gt;
&lt;br /&gt;
== Common problems and solutions ==&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple ===&lt;br /&gt;
&lt;br /&gt;
==== I got an “Uncaught error!” window, what do I do? ====&lt;br /&gt;
That’s the generic error message in SkyTemple. Go to the #support channel in the Discord server and create a new post with a picture of the error so we can try to figure out what went wrong.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple emulator / debugger ===&lt;br /&gt;
&lt;br /&gt;
==== Why does the emulator run so slowly? (SkyTemple versions &amp;lt;1.6.0) ====&lt;br /&gt;
SkyTemple’s emulator is more intensive than most NDS emus since it has to run more in the background. It’s intended more so for testing changes than casually playing.&lt;br /&gt;
&lt;br /&gt;
The built-in emulator was reworked in SkyTemple 1.6.0 to increase its speed. If speed is an issue and you have an older version, consider updating.&lt;br /&gt;
&lt;br /&gt;
==== I loaded a save state and the music and text has become glitched, What’s happening? ====&lt;br /&gt;
This is normal. You need to hard reset the emulator and not reload your save state in order to fix this. It’s recommended to use a combination of hard saves and the debug checkpoints to circumvent this issue.&lt;br /&gt;
&lt;br /&gt;
==== Can I transfer saves from the SkyTemple emulator? ====&lt;br /&gt;
The SkyTemple emu uses Desmume as a base, which means it has the same save structure. Saves should be located in your SkyTemple program folder. If you are unable to hard save or load, try to run SkyTemple as an administrator.&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate ====&lt;br /&gt;
Check that your rom name or the path to the file isn’t too long. If that’s not the problem, check that you have permission to write to the folder where the rom is located.&lt;br /&gt;
&lt;br /&gt;
==== I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What&#039;s wrong? ====&lt;br /&gt;
If you&#039;re using a savestate to test your changes, loading the savestate will overwrite them, since the savestate was created before the changes were made. Make sure to load a regular save instead.&lt;br /&gt;
&lt;br /&gt;
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.&lt;br /&gt;
&lt;br /&gt;
=== SkyTemple Randomizer ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm” ====&lt;br /&gt;
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.&lt;br /&gt;
&lt;br /&gt;
==== I&#039;m getting an error window that contains the text &amp;quot;ARMIPS reported an error while applying the patch&amp;quot; ====&lt;br /&gt;
You are missing some Windows files required to apply patches and run the Randomizer. Visit [https://www.microsoft.com/en-US/download/details.aspx?id=48145 this link] and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.&lt;br /&gt;
&lt;br /&gt;
==== I tried to randomize my ROM and I&#039;m getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ====&lt;br /&gt;
This can happen if you try to re-randomize a ROM that was already randomized before. The Randomizer cannot work with ROMs that have already been randomized, you need to use an unmodified ROM.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;Problems ROM patching&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;ROM patching ===&lt;br /&gt;
&lt;br /&gt;
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ====&lt;br /&gt;
This means the rom you are trying to apply the patch to and the one used by the rom hack creator aren’t the same. Most of the time this happens if your ROM is unclean, since most hacks use a clean ROM as a base (there&#039;s clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn&#039;t work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.&lt;br /&gt;
&lt;br /&gt;
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====&lt;br /&gt;
If the ROM you have is unclean or you have the wrong version of the game, you can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.&lt;br /&gt;
&lt;br /&gt;
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&amp;amp;sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139&lt;br /&gt;
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&amp;amp;url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&amp;amp;sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152&lt;br /&gt;
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean&lt;br /&gt;
&lt;br /&gt;
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ====&lt;br /&gt;
If you&#039;re using an online patcher, that means the patcher is not compatible with the patch you&#039;re using. Try a different one or download XDelta into your computer. You might want to get XDeltaUI instead, since that one has a graphical interface.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using XDelta on your computer, this error means that your XDelta version is outdated. Download the latest version from https://github.com/jmacd/xdelta-gpl/releases (for Windows 64-bit, download xdelta3-&amp;lt;version&amp;gt;-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.&lt;br /&gt;
&lt;br /&gt;
=== Gameplay ===&lt;br /&gt;
&lt;br /&gt;
==== The game softlocked/glitched while I was playing! What can I do? ====&lt;br /&gt;
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Cutscene softlock on a randomized ROM&#039;&#039;&#039;: During a cutscene softlock, the cutscene stops playing, but everything else (like animations and music) still play. This can happen sometimes when you use non-vanilla starters that have custom animations. The randomizer automatically applies the [[AntiSoftlock]] patch, which allows you to force the cutscene to continue by pressing A+B+X+Y. Give that button combination a try. If that doesn&#039;t work, keep reading.&lt;br /&gt;
# &#039;&#039;&#039;Crash during a cutscene&#039;&#039;&#039;: Sometimes, cutscenes can fully crash when playing any kind of custom ROM. When the game crashes, it fully stops on the current frame, music included. The most common reason why this happens during cutscenes is because the game runs out of memory trying to display a sprite. If that is the cause, applying the [[FixMemorySoftlock]] patch and trying again might fix it. Alternatively, you can also try manually editing the scene with the scripting editor and removing some actors from it. The [[List of Script Locations]] can help you locate the scene in question.&lt;br /&gt;
# &#039;&#039;&#039;Glitched colors in a dungeon, sometimes accompanied by a crash&#039;&#039;&#039;: This happens in dungeons when the game runs out of memory to display the sprites of all the pokémon on the floor. The solution here is to either endure the glitch and hope the game doesn&#039;t crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.&lt;br /&gt;
&lt;br /&gt;
== Other tools ==&lt;br /&gt;
&lt;br /&gt;
=== Sky Editor ===&lt;br /&gt;
Sky Editor is both a rom editor and a save editor created by evandixon, but nowadays it’s mostly used to edit save files. You can get it here: https://projectpokemon.org/home/forums/topic/25859-sky-editor-the-first-save-editor-for-pokemon-mystery-dungeon-explorers-of-sky/&lt;br /&gt;
&lt;br /&gt;
=== StatsUtil ===&lt;br /&gt;
StatsUtil is a tool created by PsyCommando that can be used to export some of the game’s binary files and scripts to XML files and then import them back into the game after making changes. SkyTemple can now do almost everything that StatsUtil can, so there’s no real reason to use it unless SkyTemple isn’t working for you, you want to manually edit some data without an UI, or you want to mass import and export scripts.&lt;br /&gt;
&lt;br /&gt;
Unlike SkyTemple, StatsUtil is a command line tool, it doesn’t have an interface and must be run using the terminal or batch files to execute commands. If you want to try it out it’s recommended to download [https://projectpokemon.org/home/applications/core/interface/file/attachment.php?id=45770 Psy’s modding setup folder], which contains StatsUtil + Ndstool (needed to unpack the rom so StatsUtil can read and write the files) + Some .bat files you can use to run StatsUtil without having to type commands yourself.&lt;br /&gt;
&lt;br /&gt;
After you download the folder, copy your rom into it and rename it to “rom.nds”. Then run “1b_ExtractRomNamed_rom.nds.bat”. Wait for the terminal to close, after it does you should have a new folder named “rom” containing some subfolders. Now run “2a_DecompileEverything.bat”. Once it finishes you should have a new folder called “romstats”. That folder contains the XML files you can edit to make changes to the game.&lt;br /&gt;
&lt;br /&gt;
Once you are done with the changes, apply them to the rom by running “3a_CompileEverythingAndMakeRom.bat”. Once the process finishes your rom will be patched (check the modification date, it should have changed). After this you can copy the rom back to its original location and test your changes.&lt;/div&gt;</summary>
		<author><name>Frostbyte</name></author>
	</entry>
</feed>