Frequently Asked Questions: Difference between revisions

From SkyTemple
m Fix link
m Add how to patch ROM hacks
Line 216: Line 216:


== 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 262: Line 269:
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.
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 ===
=== <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. Ask them which specific rom they used and apply the patch to that one (There are 2 versions of the US rom that are slightly different + a single version of the EU rom). See also the next question.
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. Ask them which specific rom they used and apply the patch to that one (There are 2 versions of the US rom that are slightly different + a single version of the EU rom). See also the next question.


==== I’m getting an error about that mentions the “secondary decompressor” when trying to apply a an xdelta patch ====
==== I have the wrong ROM so I can’t apply a patch, what can I do? ====
This means 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.
 
==== I have the wrong US rom so I can’t apply a patch, what can I do? ====
You can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.
You can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.


Line 276: Line 280:
* 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 about that mentions the “secondary decompressor” when trying to apply a an xdelta patch ====
This means 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.


== Other tools ==
== Other tools ==

Revision as of 11:06, 17 August 2023


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.

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. See the scripting section for more information.

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

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 ranomizer might not be able to randomize it. If you get errors, try disabling some of the options.

SkyTemple Discord server

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 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
  • 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 Pokemon?

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.

If you want to edit the effect of exclusive items you will need to do some hex editing.

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 (no sound effect)
  • 411: attack animation (no sound effect)
  • 413: walking animation (no sound effect)
  • 414: walking animation (no sound effect)
  • 415: walking animation (no sound effect)
  • 416: walking animation (no sound effect)
  • 417: walking animation (no sound effect)
  • 418: walking animation (no sound effect)
  • 419: walking animation (no sound effect)
  • 420: walking animation (no sound effect)
  • 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

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.

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. 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?

No. Knowledge on editing EoS’s sound files is very limited at this time. There are some quirks that make it harder than MIDI out and MIDI in.

There’s an ASM patch called snd_stream that allows adding .wav files to the game that can be played using scripts. Keep in mind that added files will significantly increase the size of your ROM, and that the sound quality won’t be the best.

Recently, there's been some experimental efforts at converting MIDI + SF2 into the music format used by game. No tutorial exists for this yet though.

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”.

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. 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.

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 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.

If you are looking for a particular scene, check the list of script locations.

Adding the call to the debug scene chooser to EVENT_DIVIDE

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

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. You can find the ExplorerScript language specification here.

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.

I get an error saying “cannot find file ID of 'BALANCE/mappa_s.bin” when opening my rom with SkyTemple

You are not using an Explorers of Sky rom, it’s probably Explorers of Time or Darkness. SkyTemple only supports Explorers of Sky.

SkyTemple emulator / debugger

Why does the emulator run so slowly?

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.

A rework of the built-in emulator is currently under development.

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 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. Ask them which specific rom they used and apply the patch to that one (There are 2 versions of the US rom that are slightly different + a single version of the EU rom). See also the next question.

I have the wrong ROM so I can’t apply a patch, what can I do?

You can use SkyTemple’s conversion patches to switch between ROM versions and to turn an unclean ROM into a clean one.

I’m getting an error about that mentions the “secondary decompressor” when trying to apply a an xdelta patch

This means 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.

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 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 or you want to manually edit some data without an UI.

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.