Frequently Asked Questions: Difference between revisions
m Fix line break |
m Add warning about starters being potentially removed from the team when evolved |
||
(45 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
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. | |||
This page | 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. | ||
== SkyTemple == | == SkyTemple == | ||
=== Where can I find the latest version of SkyTemple? === | === Where can I find the latest version of SkyTemple? === | ||
You can download the latest stable release of SkyTemple in its [https://download.skytemple.org/skytemple/latest/ download page]. | You can download the latest stable release of [[SkyTemple]] in its [https://download.skytemple.org/skytemple/latest/ download page]. | ||
=== Does SkyTemple support 32 bit systems? === | === Does SkyTemple support 32 bit systems? === | ||
Line 23: | Line 24: | ||
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. | 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. | ||
Scripting (cutscene and dialogue editing) is more challenging, but it has its own tutorial video | [[FAQ#Scripting|Scripting]] (cutscene and dialogue editing) is more challenging, but it has its own tutorial video. | ||
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future. | There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future. | ||
Line 35: | Line 36: | ||
== SkyTemple Randomizer == | == SkyTemple Randomizer == | ||
=== After playing for a while, I decided I want to change some of the settings. Can I use the | === Can I use the Randomizer on Android? === | ||
No. If you saved the settings and seed used for randomization, you could load them into the | 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. | ||
==== I don't have access to a computer! Is it still possible to randomize the game? ==== | |||
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: | |||
* Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer. | |||
* 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. | |||
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]. | |||
=== 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? === | |||
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'll likely get a completely different result. | |||
You should be able to reuse your previous save file, however. | You should be able to reuse your previous save file, however. | ||
=== Can I randomize a ROM hack? === | === Can I randomize a ROM hack? === | ||
Maybe. If the hack has made important internal changes to the game, the | 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. | ||
=== I can't proceed into a dungeon from the crossroads! What's wrong? === | |||
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. | |||
Starting with version 2.0.1 of the randomizer, this shouldn't happen anymore, since the ''RemoveBodySizeCheck'' patch is applied by default. | |||
If you randomized the game with an older version, you have three options: | |||
* Download the latest version of the randomizer, and start a new run using that version. | |||
* Restart with new starters that have a combined body size of 6 or less. | |||
* 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. | |||
== SkyTemple Discord server == | == SkyTemple Discord server == | ||
=== I have a question, where should I post it? === | === I have a question, where should I post it? === | ||
First you should check this page, your question might have an answer in here already. If it doesn’t (or you still have doubts after reading it), join the SkyTemple | 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: | ||
* 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 #support | * 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] | ||
* If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in #skytemple | * 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] | ||
* If you’d like to discuss the randomizer, try #randomizer-discussion | * If you’d like to discuss the randomizer, try [https://discord.com/channels/710190644152369162/808273668752015380 #randomizer-discussion] | ||
* If you have any other questions or you aren’t sure where to ask, you can try #general | * If you have any other questions or you aren’t sure where to ask, you can try [https://discord.com/channels/710190644152369162/710190644152369165 #general] | ||
=== How do I get [insert role here]? === | === How do I get [insert role here]? === | ||
Line 61: | Line 84: | ||
== ROM hacking == | == ROM hacking == | ||
=== How do I add new | === How do I add new [[Editing Pokémon|Pokémon]]? === | ||
The easiest thing you can do is replace some of the unused slots with the new | 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: | ||
==== Unused Arceus forms ==== | ==== Unused Arceus forms ==== | ||
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 | 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. | ||
==== Unnecessary Unown forms ==== | ==== Unnecessary Unown forms ==== | ||
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 | 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. | ||
==== Unused actors ==== | ==== Unused actors ==== | ||
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 | 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]]. | ||
SkyTemple also includes the experimental ExpandPokeList ASM patch, which can be used to expand the available slots. Keep in mind that we still don't know if the patch can cause issues when applied, so it's advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand. | 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't know if the patch can cause issues when applied, so it's advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand. | ||
=== How do I add new dungeons? === | === How do I add new [[Dungeon Properties|dungeons]]? === | ||
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. | 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. | ||
=== How can I edit items? === | === How can I edit [[Item Data|items]]? === | ||
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. | 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. | ||
There'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 <code>EXCLUSIVE_ITEM_EFFECT_DATA</code>. | |||
=== How can I edit moves? === | === How can I edit [[Move Data|moves]]? === | ||
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. | 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. | ||
Line 91: | Line 114: | ||
* 361: Excavate | * 361: Excavate | ||
* 362: Spin Slash | * 362: Spin Slash | ||
* 404: attack animation | * 404: attack animation with no sound effect (safe to edit) | ||
* 411: attack animation | * 411: attack animation with no sound effect (safe to edit) | ||
* 413: walking animation | * 413: walking animation with no sound effect (safe to edit) | ||
* 414: walking animation | * 414: walking animation with no sound effect (safe to edit) | ||
* 415: walking animation | * 415: walking animation with no sound effect (safe to edit) | ||
* 416: walking animation | * 416: walking animation with no sound effect (safe to edit) | ||
* 417: walking animation | * 417: walking animation with no sound effect (safe to edit) | ||
* 418: walking animation | * 418: walking animation with no sound effect (safe to edit) | ||
* 419: walking animation | * 419: walking animation with no sound effect (safe to edit) | ||
* 420: walking animation | * 420: walking animation with no sound effect (safe to edit) | ||
* 421: Secret Bazaar Escape | * 421: Secret Bazaar Escape | ||
* 422: Secret Bazaar Cleanse | * 422: Secret Bazaar Cleanse | ||
Line 127: | Line 150: | ||
* 557: generic move sound effect | * 557: generic move sound effect | ||
* 558: generic move sound effect | * 558: generic move sound effect | ||
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't touch those. Here's the list of moves with known hardcoded behavior: | |||
* 031: Weather Ball (has a special type check in <code>GetMoveTypeForMonster</code>) | |||
* 064: Thunder (has a special accuracy check in <code>MoveHitCheck</code>) | |||
* 229: Assist (has a special check to use another move after) | |||
* 270: Blizzard (has a special accuracy check in <code>MoveHitCheck</code>) | |||
* 324: Hidden Power (has a special check in <code>GetMoveTypeForMonster</code>) | |||
* 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move) | |||
* 465: Me First (has a special check to use another move after, has move effect #325 by default) | |||
* 471: Natural Gift (has a special check in <code>GetMoveTypeForMonster</code>) | |||
* 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move) | |||
=== How can I edit the way an item / move effect works? === | === How can I edit the way an item / move effect works? === | ||
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 | 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. | ||
=== Can abilities be edited? Can new abilities be added? === | === Can abilities be edited? Can new abilities be added? === | ||
Line 135: | Line 169: | ||
=== Can the Fairy type be added? And what about adding even more types? === | === Can the Fairy type be added? And what about adding even more types? === | ||
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. | 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. | ||
Even after applying the patch, you’ll still have to manually assign that type to | 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. | ||
=== Can Shiny Pokémon be added? === | |||
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. | |||
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's also necessary to set their spawn weight. However, keep in mind that if there'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. | |||
=== How can I edit boss battles? === | === How can I edit boss battles? === | ||
Boss battles take place in fixed rooms (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them: | 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: | ||
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. | 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. | ||
The list of entities, | 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. | ||
HP is capped at 999, other stats cap at 255. | HP is capped at 999, other stats cap at 255. | ||
=== 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? === | === 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? === | ||
You can use the "Go to" button under the music list (or manually navigate to "Lists > Dungeon music") to see and edit which 4 songs are included in each random entry (under the "Random music" tab). | You can use the "Go to" button under the music list (or manually navigate to "Lists > [[Dungeon Music List|Dungeon music]]") to see and edit which 4 songs are included in each random entry (under the "Random music" tab). | ||
=== How can I change the | === How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? === | ||
To change the data of these | To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the "Lists > [[Guest Pokémon List|Guest Pokémon]]" menu, available after applying the [[EditExtraPokemon]] patch. | ||
=== How do I test later dungeons in the game? Can I jump ahead in the story? === | === How do I test later dungeons in the game? Can I jump ahead in the story? === | ||
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. The “All complete” option will skip the entire story and unlock all the story dungeons. | 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. | ||
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. | 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. | ||
Line 162: | Line 201: | ||
=== Does SkyTemple support custom music/SFX? === | === Does SkyTemple support custom music/SFX? === | ||
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. | |||
=== How do I edit the personality quiz? === | === How do I edit the personality quiz? === | ||
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” → | 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]]”. | ||
=== Is it possible to add a selection menu to choose the species of the protagonist after the personality test? === | === Is it possible to add a selection menu to choose the species of the protagonist after the personality test? === | ||
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. | 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. | ||
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. | 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. | ||
=== Can I expand the list of starters (e.g. to add starters from later generations?) === | |||
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. | |||
=== Can I unlock evolution earlier in the game? === | |||
Yes! This can be done by adding a single line of code to the game. Add this line to the script you'd like to enable evolution in: | |||
<syntaxhighlight>dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;</syntaxhighlight> | |||
Refer to the [[List of Script Locations]] if you're looking for a particular scene in the game, and can'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: | |||
<syntaxhighlight>$PERFORMANCE_PROGRESS_LIST[10] = 1;</syntaxhighlight> | |||
These lines must be placed within <code>def 0 {</code>. | |||
'''Note''': 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. | |||
=== How can I publish my hack so other people can play it? === | === How can I publish my hack so other people can play it? === | ||
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 | 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'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 "[[FAQ#Common problems and solutions|Common problems and solutions]]"). | ||
XDelta UI: https://www.romhacking.net/utilities/598/ | XDelta UI: https://www.romhacking.net/utilities/598/ | ||
Line 187: | Line 235: | ||
=== Can dialogue/scenes be edited? How do I get started with it? === | === Can dialogue/scenes be edited? How do I get started with it? === | ||
This kind of editing is known as [[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]. | 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]. | ||
=== 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 unionall.ssb, add in <code>CallCommon(CORO_DEBUG_SCENE);</code> 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. | In unionall.ssb, add in <code>CallCommon(CORO_DEBUG_SCENE);</code> 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. | ||
If you are looking for a particular scene, check the [[list of script locations]]. | If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]]. | ||
[[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]] | [[File:Jump to scene.png|none|thumb|Adding the call to the debug scene chooser to EVENT_DIVIDE]] | ||
Line 202: | Line 250: | ||
==== Skip the personality test ==== | ==== Skip the personality test ==== | ||
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<syntaxhighlight> | |||
debug_Print('DIAGNOSIS_BLACK2'); | debug_Print('DIAGNOSIS_BLACK2'); | ||
screen2_FadeOut(0, 0); | screen2_FadeOut(0, 0); | ||
Line 213: | Line 261: | ||
=== What language are scripts written in? === | === What language are scripts written in? === | ||
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. | 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. | ||
== Playing ROM hacks == | == Playing ROM hacks == | ||
=== How can I play a ROM hack I downloaded? === | |||
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. | |||
See section "[[FAQ#Problems ROM patching|ROM Hacking]]" under "Common problems and solutions" for some common issues that you might experience while trying to apply a patch. | |||
You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here]. | |||
=== Where can I find already published hacks? === | === Where can I find already published hacks? === | ||
Line 229: | Line 284: | ||
==== I got an “Uncaught error!” window, what do I do? ==== | ==== I got an “Uncaught error!” window, what do I do? ==== | ||
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. | 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. | ||
=== SkyTemple emulator / debugger === | === SkyTemple emulator / debugger === | ||
==== Why does the emulator run so slowly? ==== | ==== Why does the emulator run so slowly? (SkyTemple versions <1.6.0) ==== | ||
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. | 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. | ||
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. | |||
==== I loaded a save state and the music and text has become glitched, What’s happening? ==== | ==== I loaded a save state and the music and text has become glitched, What’s happening? ==== | ||
Line 259: | Line 311: | ||
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom. | You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom. | ||
==== | ==== I'm getting an error window that contains the text "ARMIPS reported an error while applying the patch" ==== | ||
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. | |||
=== ROM patching === | ==== I tried to randomize my ROM and I'm getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened? ==== | ||
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. | |||
=== <span id="Problems ROM patching"></span>ROM patching === | |||
==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ==== | ==== I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch ==== | ||
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. | 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's clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn't work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one. | ||
==== I have the wrong | ==== I have the wrong ROM so I can’t apply a patch, what can I do? ==== | ||
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. | |||
* Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139 | * Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139 | ||
* Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152 | * Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152 | ||
* Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean | * Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean | ||
==== I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch ==== | |||
If you're using an online patcher, that means the patcher is not compatible with the patch you'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. | |||
If you'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-<version>-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded. | |||
=== Gameplay === | |||
==== The game softlocked/glitched while I was playing! What can I do? ==== | |||
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones: | |||
# '''Cutscene softlock on a randomized ROM''': 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't work, keep reading. | |||
# '''Crash during a cutscene''': 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. | |||
# '''Glitched colors in a dungeon, sometimes accompanied by a crash''': 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't crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens. | |||
== Other tools == | == Other tools == | ||
Line 283: | Line 349: | ||
=== StatsUtil === | === StatsUtil === | ||
StatsUtil is a tool created by PsyCommando that can be used to export some of the game’s binary files to XML files and then import them back into the game after making changes. SkyTemple can now do everything that StatsUtil can, so there’s no real reason to use it unless SkyTemple isn’t working for you | 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. | ||
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. | 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. |
Latest revision as of 10:09, 23 November 2024
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.
This is a curated page maintained by staff members, and as such cannot be directly edited. You can use the Discussion page to propose new questions or changes.
SkyTemple
Where can I find the latest version of SkyTemple?
You can download the latest stable release of SkyTemple in its download page.
Does SkyTemple support 32 bit systems?
Starting with version 1.5.1, SkyTemple only supports 64-bit systems. The last version with 32-bit Windows support is 1.4.7.
I downloaded SkyTemple. How do I open it?
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.
SkyTemple set off my antivirus! Is it fine?
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.
I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong?
The minimum Mac version required to run SkyTemple is MacOS 11. SkyTemple version 1.3.10 works on slightly older Mac versions.
Is there any tutorial on how to use SkyTemple?
Right now we don’t have a general tutorial. You can read the 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.
Scripting (cutscene and dialogue editing) is more challenging, but it has its own tutorial video.
There’s also some community-made tutorials available on our Discord server, and more will be hopefully added to this wiki in the future.
How can I find out which SkyTemple version I have?
Click the ≡ icon near the top left corner in SkyTemple, then select “About”.
How can I update SkyTemple?
Just download the newest version and run the installer. It’s recommended to uninstall the previous version first.
SkyTemple Randomizer
Can I use the Randomizer on Android?
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.
I don't have access to a computer! Is it still possible to randomize the game?
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:
- Downloading custom portraits will not work, no matter what. You will have to disable the option in the Randomizer.
- 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.
The APK file for the last Android release of the Randomizer is available on the official download page.
After playing for a while, I decided I want to change some of the settings. Can I use the Randomizer to make that change without affecting anything else?
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'll likely get a completely different result.
You should be able to reuse your previous save file, however.
Can I randomize a ROM hack?
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.
I can't proceed into a dungeon from the crossroads! What's wrong?
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.
Starting with version 2.0.1 of the randomizer, this shouldn't happen anymore, since the RemoveBodySizeCheck patch is applied by default.
If you randomized the game with an older version, you have three options:
- Download the latest version of the randomizer, and start a new run using that version.
- Restart with new starters that have a combined body size of 6 or less.
- 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.
SkyTemple Discord server
I have a question, where should I post it?
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 SkyTemple Discord server and ask it in the right channel:
- 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 #support
- If the question is related to SkyTemple (How to use it, bug reports, suggestions, questions…) you should ask in #skytemple-project
- If you’d like to discuss the randomizer, try #randomizer-discussion
- If you have any other questions or you aren’t sure where to ask, you can try #general
How do I get [insert role here]?
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.
How can I contact the server staff?
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.
ROM hacking
How do I add new Pokémon?
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:
Unused Arceus forms
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.
Unnecessary Unown forms
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.
Unused actors
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 cutscenes.
SkyTemple also includes the experimental ExpandPokeList ASM patch, which can be used to expand the available slots. Keep in mind that we still don't know if the patch can cause issues when applied, so it's advised to only apply it after you run out of unused slots. If you do so, make a backup beforehand.
How do I add new dungeons?
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.
How can I edit items?
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.
There'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 EXCLUSIVE_ITEM_EFFECT_DATA
.
How can I edit moves?
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.
Can new moves be added?
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:
- 361: Excavate
- 362: Spin Slash
- 404: attack animation with no sound effect (safe to edit)
- 411: attack animation with no sound effect (safe to edit)
- 413: walking animation with no sound effect (safe to edit)
- 414: walking animation with no sound effect (safe to edit)
- 415: walking animation with no sound effect (safe to edit)
- 416: walking animation with no sound effect (safe to edit)
- 417: walking animation with no sound effect (safe to edit)
- 418: walking animation with no sound effect (safe to edit)
- 419: walking animation with no sound effect (safe to edit)
- 420: walking animation with no sound effect (safe to edit)
- 421: Secret Bazaar Escape
- 422: Secret Bazaar Cleanse
- 423: Secret Bazaar Healing Beam
- 424: Spurn Orb
- 425: Foe-Hold Orb
- 426: All-Mach Orb
- 427: Foe-Fear Orb
- 428: All-Hit Orb
- 429: Foe-Seal Orb
- 467: Judgement
- 543: Weather Ball Sun
- 544: Weather Ball Hail
- 545: Weather Ball Rain
- 546: Weather Ball Sandstorm
- 547: Dig second half
- 548: Razor Wind second half
- 549: Focus Punch second half
- 550: Sky Attack second half
- 551: SolarBeam second half
- 552: Fly second half
- 553: Dive second half
- 554: Bounce second half
- 555: Skull Bash second half
- 556: Ghost-type Curse animation
- 557: generic move sound effect
- 558: generic move sound effect
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't touch those. Here's the list of moves with known hardcoded behavior:
- 031: Weather Ball (has a special type check in
GetMoveTypeForMonster
) - 064: Thunder (has a special accuracy check in
MoveHitCheck
) - 229: Assist (has a special check to use another move after)
- 270: Blizzard (has a special accuracy check in
MoveHitCheck
) - 324: Hidden Power (has a special check in
GetMoveTypeForMonster
) - 439: Healing Wish (has a hardcoded effect to set the user to 1 HP after using the move)
- 465: Me First (has a special check to use another move after, has move effect #325 by default)
- 471: Natural Gift (has a special check in
GetMoveTypeForMonster
) - 526: Lunar Dance (has a hardcoded effect to set the user to 1 HP after using the move)
How can I edit the way an item / move effect works?
In order to do this you will have to write ASM code (you can also use the 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 effects” / “Item effects” menu.
Can abilities be edited? Can new abilities be added?
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.
Can the Fairy type be added? And what about adding even more types?
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.
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.
Can Shiny Pokémon be added?
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, see above), adding shinies for all pokémon is unfeasible.
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's also necessary to set their spawn weight. However, keep in mind that if there'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.
How can I edit boss battles?
Boss battles take place in fixed rooms (aka fixed floors), which you can edit in the “fixed rooms” section. There are some things you should know about them:
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.
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.
HP is capped at 999, other stats cap at 255.
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?
You can use the "Go to" button under the music list (or manually navigate to "Lists > Dungeon music") to see and edit which 4 songs are included in each random entry (under the "Random music" tab).
How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)?
To change the data of these Pokémon, as well as which dungeons add them to your team, you can use the "Lists > Guest Pokémon" menu, available after applying the EditExtraPokemon patch.
How do I test later dungeons in the game? Can I jump ahead in the story?
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.
To start the game in a specific cutscene you will need to change a script. See “Is there a way to jump to an exact script instead of the existing debug checkpoints?” in the scripting section.
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”.
Does SkyTemple support custom music/SFX?
SkyTemple itself does not support custom music or SFX. However, you can use SkySongBuilder to add new music to the game. We have a tutorial on how to do this.
How do I edit the personality quiz?
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” → “Starters”.
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.
If you want to skip the quiz and force a specific player and partner combination, see “Can I skip the personality test in my hack and just force a certain starting team?” in the scripting section.
Can I expand the list of starters (e.g. to add starters from later generations?)
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. 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.
Can I unlock evolution earlier in the game?
Yes! This can be done by adding a single line of code to the game. Add this line to the script you'd like to enable evolution in:
dungeon_mode(177) = DMODE_OPEN_AND_REQUEST;
Refer to the List of Script Locations if you're looking for a particular scene in the game, and can'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:
$PERFORMANCE_PROGRESS_LIST[10] = 1;
These lines must be placed within def 0 {
.
Note: Evolving your starters might cause them to be removed from the active team, and you can only add them back if performance progress flag 7 is enabled.
How can I publish my hack so other people can play it?
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'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 "Common problems and solutions").
XDelta UI: https://www.romhacking.net/utilities/598/
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
Online patcher: https://www.marcrobledo.com/RomPatcher.js/
Scripting
Can dialogue/scenes be edited? How do I get started with it?
This kind of editing is known as scripting, since you will need to modify the game’s scripts. You can find a tutorial here, and a playlist with multiple tutorials here.
Is there a way to jump to an exact script instead of the existing debug checkpoints?
In unionall.ssb, add in CallCommon(CORO_DEBUG_SCENE);
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.
If you are looking for a particular scene, check the list of script locations.
Can I skip the personality test in my hack and just force a certain starting team?
Yes, in order to do this you will have to do two things:
Change the default starters
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.
Skip the personality test
Open the debugger and go to script “S02P01A”, then under “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
debug_Print('DIAGNOSIS_BLACK2');
screen2_FadeOut(0, 0);
screen_FadeOutAll(1, 0);
back2_SetGround(LEVEL_S04P01A);
back_SetGround(LEVEL_S04P01A);
screen2_FadeIn(0, 30);
screen_FadeInAll(1, 30);
Then go back up until you see forever {
, which should be on line 36. Select everything from that line to the line switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }
, (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.
What language are scripts written in?
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 language reference for more information.
Playing ROM hacks
How can I play a ROM hack I downloaded?
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 XDelta. The version of your ROM must match the version used to create the patch. ROM hacks usually specify which version they require.
See section "ROM Hacking" under "Common problems and solutions" for some common issues that you might experience while trying to apply a patch.
You can find a video that explains the process of applying a patch here.
Where can I find already published hacks?
Check out the SkyTemple hack directory. Keep in mind that some hack creators might do partial releases, so not every ROM hack listed is a completed hack.
Can I help testing rom hacks in development?
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.
Common problems and solutions
SkyTemple
I got an “Uncaught error!” window, what do I do?
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.
SkyTemple emulator / debugger
Why does the emulator run so slowly? (SkyTemple versions <1.6.0)
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.
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.
I loaded a save state and the music and text has become glitched, What’s happening?
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.
Can I transfer saves from the SkyTemple emulator?
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.
I’m getting the error “Errno 2: No such file or directory” when attempting to create a savestate
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.
I made some changes to the ROM and then tried playing to see if they worked, but nothing has changed! What's wrong?
If you'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.
You might also have forgotten to save the ROM, or might have loaded the wrong ROM.
SkyTemple Randomizer
I’m getting the error “Errno 2 No such file or directory: [...]/header_stub_wvcna.asm”
You are using a Wii U virtual console rom, which isn’t supported. Try using an EU or US rom.
I'm getting an error window that contains the text "ARMIPS reported an error while applying the patch"
You are missing some Windows files required to apply patches and run the Randomizer. Visit this link and download both the x86 and the x64 versions of the C++ Redistributable, then install them, restart the Randomizer and try again.
I tried to randomize my ROM and I'm getting errors or strange side effects, such as all the NPCs being randomized to the same Pokémon. What happened?
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.
ROM patching
I’m getting the error “xdelta3: target window checksum mismatch: XD3_INVALID_INPUT” when trying to apply an xdelta patch
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's clean and unclean versions of both EU and US ROMs). Try the solutions listed in the next question. If that doesn't work, ask the patch creator which specific ROM they used to make the patch and make sure you have the same one.
I have the wrong ROM so I can’t apply a patch, what can I do?
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.
- Convert clean or unclean US ROM to clean EU ROM: https://skytemple.github.io/patcher/?region=us&url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Fus-to-eu.xdelta&sha1=C838A5ADF1ED32D2DA8454976E5B1A1AA189C139
- Convert clean or unclean EU ROM to clean US ROM: https://skytemple.github.io/patcher/?region=eu&url=https%3A%2F%2Fskytemple.github.io%2Fpatcher%2Fpatches%2Feu-to-us.xdelta&sha1=5FA96CA8D8DD6405D6CD2BAD73ED68BC73A9D152
- Generate a clean ROM from an unclean ROM of any region: https://skytemple.github.io/patcher/?clean
I’m getting an error that mentions the “secondary decompressor” when trying to apply an xdelta patch
If you're using an online patcher, that means the patcher is not compatible with the patch you'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.
If you'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-<version>-x86_64.exe.zip). Then replace your xdelta.exe file (not xdeltaUI.exe) with the one you just downloaded.
Gameplay
The game softlocked/glitched while I was playing! What can I do?
There are multiple reasons why the game can softlock when playing a hack or a randomized ROM. Here are the most common ones:
- Cutscene softlock on a randomized ROM: 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't work, keep reading.
- Crash during a cutscene: 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.
- Glitched colors in a dungeon, sometimes accompanied by a crash: 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't crash, or manually edit the dungeon and remove some pokémon from the spawn list of the floor(s) where the glitching happens.
Other tools
Sky Editor
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/
StatsUtil
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.
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 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.
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.
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.