Jump to content

[GEN III] Mystery Gift Tool - Nintendo Events, Wondercards, e-Trainer cards and e-Berry editor (and more!)


suloku

Recommended Posts

I don't know much about the script capabilities for gen 3 WCs, so please correct me if this doesn't make sense.  @suloku regarding the script capabilities and bulbapedia claiming the eggs could not be shiny, is there a way to add in a shiny check to the script itself?  For example, loop and generate a new PID if it would be shiny?

Link to comment
Share on other sites

@Sabresite I haven't gone that deep in gen3 scripting, but I don't recall such a command.

Here's a list: http://www.cosarara.me/jaume/SphericalIce/

I've searched  a little and seems people have made the "Shinyizer", which adds asm code to the rom that can be called via script asm calls to modify the encounters and force them to be shiny. I haven't found any reference to shiny forcing/blocking in the scripts. That may be because there was no code for shiny forcing, or because no one has found it in the roms yet.

I don't think shininess or PID can be checked via scripting, but maybe there's such a command, but undocumented. If there was a command to check for shininess, it wouldn't be difficult to loop if a shiny egg is generated: here's a list of the special and special2 commands: https://www.pokecommunity.com/showthread.php?t=184273
i.e. "148: checks something on party pokemon", this command might actually check for shininess...

Overall, the fact that legendaries aren't shiny locked makes me think they didn't really add any shiny lock. Also, he in-rom scripts for all the events we have only differentiate in the text, which was changed a little in the final versions, which makes me think it is unlikely for the wish eggs to be that different from the in-rom script, but from what I've seen, scripting might be enough to manually do a shiny check, or maybe there is an undocumented command for such a task.

My personal opinion is that if they didn't bother with the in-game shiny lock, they most likely wouldn't for the wish eggs, but we can't be sure without actually checking the real deal.

EDIT: I forgot they did shiny lock channel jirachi and colosseum celebi...so maybe they did something for FRLG/Emerald

Link to comment
Share on other sites

Has anyone translated the Old Sea Map wondercard and the guy who gives it to you's text into English? If not, could someone please do that!

I assume it's something like (Based on the other cards):

Spoiler


                “OLD SEA MAP”
            Exchange Card 2005
Go to the second floor of the POKéMON
CENTER and meet the delivery person in
green. Receive the OLD SEA MAP and
then save the game!!
Do not toss this Exchange Card
before receiving the OLD SEA MAP!!

 

Guy's Text:

Spoiler

 

Thank you for using the MYSTERY
GIFT System.

You must be [Player's Name].
There is a map here for you.

Obtained the OLD SEA MAP!

[Player's Name] put away the OLD SEA MAP
in the KEY ITEMS POCKET.

It appears to be for use at the
LILYCOVE CITY port.

Why not give it a try and see what
it is about?

 


Speaking to him again after receiving the item, it only repeats the first dialog box.

I didn't do it myself because I couldn't figure out how to load the script in XSE. It just shows up blank, even if I enter 250 in that offset box. I assume it's the script where the guy's text is. I'm unsure if it is referred to as map in that "There is a map here for you." section or maybe item, or something else. I don't know Japanese this is just based on context from the official English tickets. Thanks!

Edited by Home_Rowed
Formatting, Spelling
Link to comment
Share on other sites

There's a sample old sea map wondercard for all non-jap emerald games in the download. It uses the script found in the english rom, you may edit the WC text to your liking. I didn't do one for each language because it is not an official thing and the english one works just as fine for all the other languages, so for those who only want to get the Mew should be more than enough.

When exporting the script for XSE you get a GBA file (to load into XSE) and popup window with the offset you need to input in XSE.

Link to comment
Share on other sites

Hey, so I've been playing around with this tool a bit, but it seems I can't use a custom XSE script. I can't import a script cuz it always says invalid size, I can't edit a script cuz it says invalid file size, and I can't edit the script in the wonder card file in a hex editor cuz it breaks the checksum's (which I'm not 100% sure how to work out), any ideas why this is happening?

Edited by PurpleOrange
Link to comment
Share on other sites

13 hours ago, suloku said:

There's a sample old sea map wondercard for all non-jap emerald games in the download. It uses the script found in the english rom, you may edit the WC text to your liking. I didn't do one for each language because it is not an official thing and the english one works just as fine for all the other languages, so for those who only want to get the Mew should be more than enough.

When exporting the script for XSE you get a GBA file (to load into XSE) and popup window with the offset you need to input in XSE.

Wow, I didn't notice that custom one was already there, thanks. The double dash (--) is a little weird; but I guess since it's in the ROM that's how it would have been if they went through with the event outside of Japan.

Link to comment
Share on other sites

22 hours ago, PurpleOrange said:

Hey, so I've been playing around with this tool a bit, but it seems I can't use a custom XSE script. I can't import a script cuz it always says invalid size, I can't edit a script cuz it says invalid file size, and I can't edit the script in the wonder card file in a hex editor cuz it breaks the checksum's (which I'm not 100% sure how to work out), any ideas why this is happening?

Did you build the script from scratch?

The export and import as XSE file are only really meant to export a wondercard script, edit it and re-import. they expect a .gba file with the 4 first bytes being a pointer to the offset where the script is in the gba file (the same offset shown when you export for XSE).

The non xse script import/export expect a 996 byte file or less, the script starting at the begining of the file.

XSE is though for roms, and for some reason you can't rename a script file to gba, load it on XSE and set offset 0x000000 for editing, the minimum seems to be 0x0000004, so in order to edit a plain script you need to add a 4 byte padding, and in order to import, you need to remove that padding.

I could make it so when importing the program skips all 0x00 bytes on the file, assuming that the first non 0x00 byte is where the actual script starts in the file, but this would only remove the need to manually delete the padding.

As an alternative, get a wondercard, export the script as XSE and use it as a template: in xse remove the script and put your own, this way you will be able to import back with your script.

9 hours ago, Home_Rowed said:

Wow, I didn't notice that custom one was already there, thanks. The double dash (--) is a little weird; but I guess since it's in the ROM that's how it would have been if they went through with the event outside of Japan.

The scripts found in the rom are a little different from the final scripts nintendo used for distribution (just some word changed here and there). In fact, for example, they messed up the Spanish Aurora ticket from emerald: it still tells you to go to vermillion city, while the one found in the rom is correct. This seems to indicate that they used the FRLG wondercard as template for the emerald cards (also explains why the official cards talk about the man in green, while he wears blue in emerald), and they didn't notice because the distribution wasn't actually held in spain (but could be downloaded at some later events in germany, or sending to nintendo of italy which is what we did).

In the rom there's also the egg present scripts (which are embedded in the editor for easy usage) and some others, like the altering cave event script, which was probably scrapped due to only being able to hold 1 wondercard at a time and it works by changing the pokémon in the cave each time you talk to the deliveryman (I guess they should have hardcoded the event and just use the wondercard to trigger a flag as a solution, but meh). I should include an altered cave wondercard maybe...

Link to comment
Share on other sites

2 hours ago, suloku said:

Did you build the script from scratch?

The export and import as XSE file are only really meant to export a wondercard script, edit it and re-import. they expect a .gba file with the 4 first bytes being a pointer to the offset where the script is in the gba file (the same offset shown when you export for XSE).

The non xse script import/export expect a 996 byte file or less, the script starting at the begining of the file.

XSE is though for roms, and for some reason you can't rename a script file to gba, load it on XSE and set offset 0x000000 for editing, the minimum seems to be 0x0000004, so in order to edit a plain script you need to add a 4 byte padding, and in order to import, you need to remove that padding.

I could make it so when importing the program skips all 0x00 bytes on the file, assuming that the first non 0x00 byte is where the actual script starts in the file, but this would only remove the need to manually delete the padding.

As an alternative, get a wondercard, export the script as XSE and use it as a template: in xse remove the script and put your own, this way you will be able to import back with your script.

This was really helpful and I got it to work, thanks a lot! 

Okay for anyone else who wants to do this, this is what I did

1. Using the tool, pressed "WC3 Editor" and loaded a premade wondercard
2. Exported that using "XSE Export"
3. Opened up the script in a hex editor
4. Changed all bytes to FF and saved
5. Opened the script in XSE
6. Created a custom script which starts off with 
    #dynamic 0x000004
    #org @start
    setvirtualaddress 0x8000004
7. Compiled the script
8. Opened up the script in a hex editor
9. Typed 04 00 00 00 at that start
10. Deleted all the FF bytes at the end and saved
11. Imported the script using "XSE Import" in the tool
12. Saved the wonder card

  • Like 1
Link to comment
Share on other sites

16 minutes ago, pokejed said:

Sorry can someone do a tutorial on how to use the Mystery gift tool, I have no idea on how to go about creating a wish chansey for example. 

Good luck trying to figure it out. This generates Wish Farfetch but I have mixed luck trying to modify it to get other Pokemon. It's also a Royal pain in the ass trying to get more than 1 Pokemon when you re-inject it. 

Wish Farfetchd.wc3

  • Like 1
Link to comment
Share on other sites

Thanks

Im totally new to this, have played around with pokehex a bit, I want to get a collection of all the event Pokemon I have missed over the years. This tool seems great for the in game game events, but I don't understand the process for getting the Mystery gift Pokemon, I take it that none of the wondercards are available so you would have to use this tool to recreate them.

With the WC3 editor do you have to load a template WC3 before you can inject the give egg script?

There is the WN_USAEUR_Empty.wn3 file in the folder but this is a different file type so im not sure what this is used for.

I can load the file you posted HaxAras but it is in Spanish and seems to mention the Aurora ticket in the text?

Thanks

 

Link to comment
Share on other sites

2 minutes ago, pokejed said:

Thanks

Im totally new to this, have played around with pokehex a bit, I want to get a collection of all the event Pokemon I have missed over the years. This tool seems great for the in game game events, but I don't understand the process for getting the Mystery gift Pokemon, I take it that none of the wondercards are available so you would have to use this tool to recreate them.

With the WC3 editor do you have to load a template WC3 before you can inject the give egg script?

There is the WN_USAEUR_Empty.wn3 file in the folder but this is a different file type so im not sure what this is used for.

I can load the file you posted HaxAras but it is in Spanish and seems to mention the Aurora ticket in the text?

Thanks

 

We don't have any official cards for the eggs and I couldn't make one so I modified one. The Pokemon given by 'my' card are created the same way as the originals were so it's not really a big deal. 

Link to comment
Share on other sites

18 hours ago, pokejed said:

Thanks when I try and inject the old sea map into my Emerald save it keeps on saying that file size is invalid?

You are most likely injecting the official japanese event into a non-japanese savegame. Use the unofficial one included in the package for non-japanese games, it will enable the event just like the japanese one. Of course the Mew will be considered non-legal, since it was only ever possible to obtain in a japanese game.

But you may override the langauge setting and inject the official japanese wondercard into your non-jap save and use it with a japanese rom to get a japanese gen 3 mew.

ps: mystery gift can be enabled in the editor via the "extra" menu, for those who don't mind enabling it via save editing.

  • Like 1
Link to comment
Share on other sites

Hello,

thank you to all who have contributed in developing this tool!

I've read many pages of the reseach thread (

) and compared what were said with what the tool can actually do and I have some questions:

1) How can I create an event where the player receive NOT an egg but directly a specified Pokémon ?

2) How to create a custom event of Regi dolls ? i can't see any option in the tool to enable the player to receive the dolls

3) How can I change the current pokémon in the Altering Cave?

 

Maybe we currently can't do anything of what I'm asking for, but I want to be sure that I did'nt miss any option in the tool that could help me doing these things...

Thank you!

Link to comment
Share on other sites

  • 2 weeks later...
On 9/3/2017 at 9:35 PM, virgyxx said:

1) How can I create an event where the player receive NOT an egg but directly a specified Pokémon ?
You'll need to create a script yourself for that and put it on a wondercard. I wanted to modify the givegg scripts to directly have a a "give pokemon script" button, but as you can see it has not yet been done (having 7 languages in the game, meaning 7 scripts doesn't help my motivation).

2) How to create a custom event of Regi dolls ? i can't see any option in the tool to enable the player to receive the dolls
You could create a script that gives you the Regi Dolls.
Also, we wanted to make e-reader saves that would work with games other than japanese (an user already had them in fact), but I've never actually looked into that.

But you can use the Decoration Editor to add the Regi Dolls to your savegame.

3) How can I change the current pokémon in the Altering Cave?
The script for this is actually in the rom, we wanted to make a wondercard for each one, but never got to write the WC text for all languages. I think ajxp had some text, I'll ask him. In any case I'll try to include a english and spanish version in the package for people to use. (The way this script works is that it will change the pokemon in altering cave each time you talk to the man in green/blue)

As you can see, the tool allows to do many things with custom scripts, but being able to do it was the main objective and little has been done. Well, I made a wondercard that enables the eon ticket event in emerald and another one that resets the legendary flags so you can rebattle/recapture them, but never uploaded them becasue I did them for some tests and are somewhere in my computer.

I should really retake this project and close those loose ends.:$

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

@No.one when possible, do not double post. instead edit it into your original post.
also be patient and wait for a response :)

@suloku there's some intriguing questions for you here.
Feel free to add on or correct me, when necessary.

 

In any case, I'll try to answer to the best of my abilities.

1. since the file says e-card, I'll say the mystery gift was dumped after scanning the e-card dot code.
the e-card dot code actually exists out there, can even be used on emulators.

2. I would assume the berry cards were never truly released for those games,
hence why the program cannot do it?
(I feel like this is a bulbapedia-able fact)

3. If I recall, Emerald can only get Eon Ticket by mixing records with RS.
That's how it was programmed in the games (I think)

4. I'm not sure about this.

Link to comment
Share on other sites

@No.one

1) As theSLAYER said, it's the official US Eon ticket e-card (included for event completion and as another option to get it).

2) e-berry where (apparently) removed from FRLG and Emerald. No cards where released to my knowledge and there's no space in the savegame to hold the berry data due to WonderCards being stored there. There's the slim chance that they moved it to another portion of the savegame, but without e-cards we can't know without reverse enginering the rom (which I'm not capable of).

3) This one is tricky. In RS Eon Ticket event used Mystery Event option to get it. In those games, a script is stored in the savegame AND the data for record mixing it is also stored in the save. When you talk with your dad at petalburg it gets executed, giving you the Eon ticket item and enabling the flags for the events, then the script gets erased from the save (so everything returns to normal).

Since emerald was released after RS and the Eon ticket for them was made, they put the Eon Ticket event script in-game. In japan, the oficial event was still carried out via Mystery Event, but instead of sending the script and record mixing data, it enabled the flag (only one!) in the save for the in-game event and stored the record mixing data.
In the official emerald event, you get handed out the ticket by the man in blue at the pokémon center (this is the in-game event).

The ticket events are scripted in a way that if one of the flags for the actual event or the item are already in the save they won't trigger again. This for example is what makes that if you hacked in (or used a glitch) to get the Eon Ticket item the event won't be enabled (if I recall properly).

Enabling the unofficial Eon Ticket event would yield the same results as mixing records because that button won't inject the data needed for sharing an object via mix records (you can check this yourself via extracting the mystery event from the save and opening it in the editor). There will be one difference: a flag that should only be possible to be enabled in the japanese version of the game will be enabled.

If you want an alternate method to get the eon ticket in emerald without mixing records that yields the same result, the easiest (and flashiest) way would be to get the rom script for the in-game eon ticket event and convert it into a wondercard, since wondercards can be tossed and shared, that would be the best way and would also feel like doing the event instead of just enabling the flags and giving the item via save editing.

4) For the TGC, we have the emerald counterpart and the WC text is different. For the Rocks america one we don't know if the text was different, it might have just been the standard "Mystic Ticket" we already have (the same  card was distributed in Pokemon Center New York and Mexico, Rocks America might or might not have different text). The events themselves are the very same, so it doesn't really make a difference in-game. Would still be nice to have all the variants available though.

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...