Frequently Asked Questions: Difference between revisions
m Link to skysongbuilder |
Restructure new moves question to make it clearer |
||
| (54 intermediate revisions by 2 users not shown) | |||
| Line 16: | Line 16: | ||
=== SkyTemple set off my antivirus! Is it fine? === | === 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. | 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]]. | ||
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 | |||
==== Why does SkyTemple set off false positives? ==== | |||
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. | |||
=== I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? === | === I’m trying to run SkyTemple on Mac and the app just closes when I try to open it. What’s wrong? === | ||
| Line 26: | Line 31: | ||
[[FAQ#Scripting|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 | 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. | ||
=== How can I find out which SkyTemple version I have? === | === How can I find out which SkyTemple version I have? === | ||
| Line 35: | Line 40: | ||
== SkyTemple Randomizer == | == 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 [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? === | === 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? === | ||
| Line 43: | Line 59: | ||
=== 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 Randomizer might not be able to randomize it. If you get errors, try disabling some of the options. | 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]? === | ||
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 # | 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. | ||
=== How can I contact the server staff? === | === 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. | 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. | ||
=== I've been banned from the server, how can I contact the mods to request an appeal? === | |||
You can appeal strikes and bans by visiting https://appeal.gg/skytemple. | |||
== ROM hacking == | == ROM hacking == | ||
| Line 82: | Line 112: | ||
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 [[Move Data|moves]]? === | === How can I edit [[Move Data|moves]]? === | ||
| Line 88: | Line 118: | ||
=== Can new moves be added? === | === Can new moves be added? === | ||
The move list cannot be expanded at the moment, but you can replace | The move list cannot be expanded at the moment, but there's some unused move slots that can be replaced without any side effects. They are the following: | ||
* 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) | |||
* 557: generic move sound effect (likely safe to edit, not confirmed) | |||
* 558: generic move sound effect (likely safe to edit, not confirmed) | |||
There's also a set of moves used for special purposes, which you can replace if you're certain their effect will never be called in your hack (for example, if you remove the Secret Bazaar, you can replace moves 421-423). These moves are the following: | |||
* 361: Excavate | * 361: Excavate | ||
* 362: Spin Slash | * 362: Spin Slash | ||
* 421: Secret Bazaar Escape | * 421: Secret Bazaar Escape | ||
* 422: Secret Bazaar Cleanse | * 422: Secret Bazaar Cleanse | ||
| Line 111: | Line 146: | ||
* 428: All-Hit Orb | * 428: All-Hit Orb | ||
* 429: Foe-Seal Orb | * 429: Foe-Seal Orb | ||
* 543: Weather Ball Sun | * 543: Weather Ball Sun | ||
* 544: Weather Ball Hail | * 544: Weather Ball Hail | ||
| Line 126: | Line 160: | ||
* 555: Skull Bash second half | * 555: Skull Bash second half | ||
* 556: Ghost-type Curse animation | * 556: Ghost-type Curse animation | ||
* | If you need even more slots, you can also replace existing regular moves with entirely new ones. 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) | |||
* 467: Judgment (copies the user's first type) | |||
* 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? === | ||
| Line 139: | Line 183: | ||
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. | 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? === | ||
| Line 145: | Line 194: | ||
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, 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. | 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. | ||
HP is capped at 999, other stats cap at 255. | HP is capped at 999, other stats cap at 255. | ||
| Line 153: | Line 202: | ||
=== How can I change the Pokémon that are added to your team during certain dungeons (like Bidoof during Craggy Coast)? === | === 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 List|Guest Pokémon]]" menu, available after applying the [[ | 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 [[EditGuestPokemon]] 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 163: | Line 212: | ||
=== 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? === | |||
The vanilla quiz is not part of the script engine, it'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]]”. | |||
However, it's possible to reimplement the quiz as a script using [[QuizMenuTool Tutorial|QuizMenuTool]], which provides much more flexibility. | |||
=== 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? === | ||
| Line 176: | Line 223: | ||
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 any pokémon currently in your active team will disband it, which will cause your starters to be removed from the active team. You can only add them back if [[Performance Progress Flags|performance progress flags 7 and 20]] are enabled. You can add two more lines similar to the one used above to enable flag 10 to enable these two as well, although bear in mind that enabling these two flags has other side effects (check the page linked earlier for details). | |||
=== Is there a way to mass edit data? === | |||
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 "Import" and "Export" buttons available on most screens to copy the data from one entry to another. | |||
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'll have to manually edit each floor. | |||
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]]. | |||
=== 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 192: | Line 258: | ||
=== 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|list of script locations]]. | If you are looking for a particular scene, check the [[List of Script Locations|list of script locations]]. | ||
| Line 204: | Line 270: | ||
==== 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 212: | Line 278: | ||
screen2_FadeIn(0, 30); | screen2_FadeIn(0, 30); | ||
screen_FadeInAll(1, 30); | screen_FadeInAll(1, 30); | ||
</syntaxhighlight>Then go back up until you see <code>forever {</code>, which should be on line 36. Select everything from that line to the line <code>switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }</code>, | </syntaxhighlight>Then go back up until you see <code>forever {</code>, which should be on line 36. Select everything from that line (including the line itself) to the line <code>switch ( message_Menu(MENU_PERSONALITY_TEST_END) ) { }</code> (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. | ||
=== What language are scripts written in? === | === What language are scripts written in? === | ||
| Line 222: | Line 288: | ||
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. | 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 "[[ | See section "[[Frequently Asked Questions#Problems ROM patching|ROM Patching]]" 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]. | You can find a video that explains the process of applying a patch [https://www.youtube.com/watch?v=NaM2yudzFS4 here]. | ||
| Line 238: | Line 304: | ||
==== 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 277: | Line 340: | ||
==== 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 ROM so I can’t apply a patch, what can I do? ==== | ==== 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 | ||
| Line 286: | Line 349: | ||
* 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 | ==== 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 295: | Line 369: | ||
=== StatsUtil === | === StatsUtil === | ||
StatsUtil is a tool created by PsyCommando | 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. | ||
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. | 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. | ||
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. | 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. | 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. | ||
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'll need some other tool to unpack and repack the ROM, since StatsUtil can only work with the ROM data after it's unpacked. | |||