Jump to content

[GEN 3] Mystery Event/Gift Research


Guest

Recommended Posts

I might be coding this, but I'm no experienced coder at all, less in C# and windows forms, so since this is how I did it and it works, I'm not changing it :P

Btw, here's the RS script for regidolls from Morfeo:

'---------------
#org 0x4
setvirtualaddress 0x8000004
lock
faceplayer
virtualmsgbox 0x8000080 '"PAPÁ["][player]! Me alegro de vert..."
checkflag 0xFB00
virtualgotoif 0x1 0x8000035
callstd 0x4
giveitem3 0x76
compare LASTRESULT 0x0
virtualgotoif 0x1 0x8000077
setflag 0xFB00
virtualcall 0x8000037
callstd 0x4
checkflag 0xFB01
virtualgotoif 0x1 0x8000055
giveitem3 0x77
compare LASTRESULT 0x0
virtualgotoif 0x1 0x8000077
setflag 0xFB01
giveitem3 0x78
compare LASTRESULT 0x0
virtualgotoif 0x1 0x8000077
clearflag 0xFB00
clearflag 0xFB01
virtualmsgbox 0x800014A '"La nota del paquete dice:\nSi dese..."
callstd 0x4
release
killscript

'---------------
#org 0x35
callstd 0x4
checkflag 0xFB01
virtualgotoif 0x1 0x8000055
giveitem3 0x77
compare LASTRESULT 0x0
virtualgotoif 0x1 0x8000077
setflag 0xFB01
giveitem3 0x78
compare LASTRESULT 0x0
virtualgotoif 0x1 0x8000077
clearflag 0xFB00
clearflag 0xFB01
virtualmsgbox 0x800014A '"La nota del paquete dice:\nSi dese..."
callstd 0x4
release
killscript

'---------------
#org 0x77
virtualmsgbox 0x80001B8 '"¡Que mal! No tienes especio para o..."
callstd 0x4
release
end

'---------------
#org 0x37
checkflag 0xFB01
virtualgotoif 0x1 0x8000055
giveitem3 0x77
compare LASTRESULT 0x0
virtualgotoif 0x1 0x8000077
setflag 0xFB01
giveitem3 0x78
compare LASTRESULT 0x0
virtualgotoif 0x1 0x8000077
clearflag 0xFB00
clearflag 0xFB01
virtualmsgbox 0x800014A '"La nota del paquete dice:\nSi dese..."
callstd 0x4
release
killscript

'---------------
#org 0x55
giveitem3 0x78
compare LASTRESULT 0x0
virtualgotoif 0x1 0x8000077
clearflag 0xFB00
clearflag 0xFB01
virtualmsgbox 0x800014A '"La nota del paquete dice:\nSi dese..."
callstd 0x4
release
killscript


'---------
' Strings
'---------
#org 0x80
= PAPÁ["][player]! Me alegro de verte!\nPero seguro viniste solo porque ya\pte enteraste de que me llegó un\npaquete para ti de parte de MORFEO.\p¡INCREIBLE!, contiene estos POKé DOLL.\n¡Solo míralos!, aquí tienes...

#org 0x14A
= La nota del paquete dice:\nSi deseas contactar a MORFEO,\ppuedes escribirle a su correo:\n["]pkmnmorfeoœgmail.com"

#org 0x1B8
= ¡Que mal! No tienes especio para otro\nPOKé DOLL.\pPrimero haz espacio en tu PC y\ndespués regresa conmigo.

From what he did, I've deduced how to create the script and make the pointers relative to the script, so with XSE it will be a piece of cake.

Also, it seems morfeo didn't know there's a command to check if the dolls are already in the decoration inventory, as he sets some flags to make sure he gives the 3 dolls instead of doing it the "right" way.

Also, the checksum used in mistery event for Emerald is the very same used for wondercards. GF probably implemented it on emerald and used it for ME too.

EDIT:

Re-reading this: http://forums.glitchcity.info/index.php?topic=7114.0

What I thought to be some kind of header for the script in mistery event, may be the person to whom the script is associated:

Offset Len  Description
$00    1    Map bank
$01    1    Map number
$02    1    Person event number
$03    4    Pointer to script start
$07    4    Pointer to script end

I may be wrong, but advancemap (an editing tool) may tell us if Norman at petalburg gym has something to do with "33 08 01 01"

EDIT 2:

After comparing USA save after transfering enigma berry with e-reader:

Section 2: 0x41A bit 0 has been set (changed from 0x00 to 0x01) --> maybe this is the flag that triggers norman to give an enigma berry

Section 4: 0x2E0 - 0x80F e-Card Berry data inserted.

There's no more changes, gonna see if that bit in section 2 really is a flag for enigma berry.

Link to comment
Share on other sites

I may be wrong, but advancemap (an editing tool) may tell us if Norman at petalburg gym has something to do with "33 08 01 01"

EDIT 2:

After comparing USA save after transfering enigma berry with e-reader:

Section 2: 0x41A bit 0 has been set (changed from 0x00 to 0x01) --> maybe this is the flag that triggers norman to give an enigma berry

Section 4: 0x2E0 - 0x80F e-Card Berry data inserted.

There's no more changes, gonna see if that bit in section 2 really is a flag for enigma berry.

I'm not sure about the 33 but 08 01 is the map number and the other 01 is the NPC event number.

AdvanceMap shows map numbers in the tree on the left while the persons event number is on the right.

M8LQjUB.png

0x41A is indeed a flag, but not a bit flag. The e-Reader sets the value to 0x01 everytime you scan in a berry. If you modify this value the e-Reader will overwrite it with 0x01. Seems like it isn't used by anything else.

In RS you can set it with these AR codes.

Get 1 x Enigma Berry from Norman (Press L or R)
ENGLISH
57A0ECFC 32CDF928
50A7B662 26EDAD04

JAPANESE
57A0ECFC 32CDF928
C9C8078C E18C2D7E

https://projectpokemon.org/forums/showthread.php?48134-Ruby-Sapphire-e-Reader-Berries-%28EU-US-JP%29-%28ARv3-4%29

Link to comment
Share on other sites

Thank you very much for the information.

Some things about berries:

* Region 0xC-0x13 (8 bytes) is 0x00 in the e-card data, but once in the save it has data (unknown meaning)

* Region 0xC-0x13 (8 bytes) is interpreted as being 0x00 when the berry checksum is calculated (same method as for RS mistery event).

* USA berries work on jap games, but description won't shown. More info on what makes them different is needed, but I've read it has to do with text string lengths, but the other data for the berry might be in the same offsets.

Export/import berry has been added (0x41A set to 0x01 when injecting). Berry editor coming.

I also need to add handling of the different checksum calculation for mistery event in emerald. Is there any information about what mistery event was used for in JAP Emerald and FRLG? Besides eon ticket on emerald I know nothing.

EDIT: http://puu.sh/oL61R/0fd6e7af9e.png

http://puu.sh/oL6BM/42a4d0a9a0.png

Only the "usage by trainer" field is missing from editor, but it is rather complicated, so I'm leaving it for later.. It'd be great if I could convert png files to berry sprites and vice versa, but it's probably too complicated for me and there's surely some gen 3 sprite editors out there. If I get the file format I could export/import berry sprite from that format.

There seems to be some upper/down limits to the berry propierties, as I set all to max and the berry wasn't recognized by the game. I'll check what the values are tomorrow.

Edited by suloku
Link to comment
Share on other sites

I also need to add handling of the different checksum calculation for mistery event in emerald. Is there any information about what mistery event was used for in JAP Emerald and FRLG? Besides eon ticket on emerald I know nothing.

Not that I know.

The Emerald Version of the Eon Ticket Event as we know used the hardcoded script that is activated by the activation of a simple flag.

Besides all the Emerald e-Cards I saw so far were Trainer Cards.

+ Correct me if I'm wrong... (Mystery Events & e-Cards are still new to me in many ways, so I don't know too much about them...)

R&S e-Cards and FR&LG e-Cards are incompabitle with Emerald?

This would basically mean that besides the Eon Ticket Mystery Event there were only Trainer Events in Emerald.

And the function you found was appearently completely unused. So it's kinda interesting to know about it.

Would be cool to figure out that checksum too... The question remains if it's worth all the effort...

Btw. great to hear that the Berry Editor is coming!

Link to comment
Share on other sites

@suloku: Nice Berry! :cool:

Btw. I wanted to start with the translation work but then I saw that the Japanese only e-Berries were already translated by others.

Here the Topo Berry as an example: http://bulbapedia.bulbagarden.net/wiki/Topo_Berry

Edit:

ok, thx for the info BlackShark.

I think we can cut some words here and there or maybe retranslate unnecessary parts.

Let me know if you need my help.

Link to comment
Share on other sites

Btw. I wanted to start with the translation work but then I saw that the Japanese only e-Berries were already translated by others.

Here the Topo Berry as an example:

http://bulbapedia.bulbagarden.net/wiki/Topo_Berry

Each line is only allowed to have 45 characters. Those translations are not always conform with that. We have to make them suit the restrictions.

Link to comment
Share on other sites

Real.96 and I talked about it and we think we should do this asap because we don't know when they in Italy will stop the distribution.

I like to inform you guys that I have a German Ruby and German Emerald here that could be contributed to this.

Just in case if no one from Germany wants to participate and get an German Aurora Ticket on Emerald or Eon Ticket on RS.

So most important now would be to get an Spanish Ruby or Sapphire Version.

If someone has some French cartridges to offer that would be cool as well...

In case if HaxAras can't make it time. (Customs ect. or whatever might happen...)

If someone wants to donate money please contact Real.96 via PM.

He's the one who will do the whole process and the best would be if he could buy the missing cartridges.

Because he will send them to Nintendo in Italy to gather the Events so it would be the shortest way.

Thank you very much!

Link to comment
Share on other sites

Short reply. I contacted NoA and they told me the do not allow people to send in their carts for repair/tickets to be inserted anymore.

Thanks for contacting them... at least we know now what there is no hope regarding NoA and the Mystic Ticket. :/

Link to comment
Share on other sites

ajxpkm said:
Thanks for contacting them... at least we know now what there is no hope regarding NoA and the Mystic Ticket. :/

Yeah, I didn't really think it was going to happen to begin with but it was still a sad bit of news to find out anyway.

Edited by HaxAras
Link to comment
Share on other sites

Honestly not surprised NoA was useless. I can't remember them ever letting people send in games to get past events. Which sucks, considering North American Gen 3 events were very limited. Guess whoever wants the English Mystic Ticket will have to settle for using suloku's tool.

Link to comment
Share on other sites

@HaxAras:

Yes, but it would be the European English Aurora Ticket in this case.

+ We need the American Mystic Ticket and I highly doubt that Nintendo in Italy has the American Mystic Ticket Distribution Device...

Unfortunately...

Since it looks like no one wants to donate I offered Real.96 to pay him 50% of the price if he wants to buy more cartridges on ebay.

I think we should get all cartridges together as soon as we can, just to make sure that we can make it before the distribution ends.

I think we're really lucky that they still do it now in 2016, but it's better to be save... so we should do it in the next few weeks I think.

Link to comment
Share on other sites

So, back to scripting: I made a mistery event script for emerald that enables the eon ticket event (which is hardcoded to the rom). It's flag 0xD50 if anyone wonders.

Also, I made a wondercard for emerald that enables the eon ticket flag. Yep. A shearable wondercard that allows access to the in-game event for the eon ticket. Only downside is that I don't think there's a way to add the record mixing item data trough scripting (in jap emerald, the mistery event for eon ticket enables the flag and also puts the item record mixing data, or that's how I have been told the event worked and what taka's tools do).

EDIT: it was flag 0xD50, I misstyped

Edited by suloku
Link to comment
Share on other sites

@HaxAras:

Yes, but it would be the European English Aurora Ticket in this case.

+ We need the American Mystic Ticket and I highly doubt that Nintendo in Italy has the American Mystic Ticket Distribution Device...

Unfortunately...

Since it looks like no one wants to donate I offered Real.96 to pay him 50% of the price if he wants to buy more cartridges on ebay.

I think we should get all cartridges together as soon as we can, just to make sure that we can make it before the distribution ends.

I think we're really lucky that they still do it now in 2016, but it's better to be save... so we should do it in the next few weeks I think.

Considering the English Mystic Ticket was only distributed in the US, there's absolutely no way Nintendo Italy has it.

Link to comment
Share on other sites

Invader TAK said:
Considering the English Mystic Ticket was only distributed in the US, there's absolutely no way Nintendo Italy has it.

I refuse to give up yet though. It may be a completely lost cause to send an English cart to Italy. There's already way more backed up events than I'd ever have imagined were still around. It might still be out there. It might be like finding a needle in a haystack, but it could happen.

Edited by HaxAras
Link to comment
Share on other sites

I refuse to give up yet though. It may be a completely lost cause to send an English cart to Italy. There's already way more backed up events than I'd ever have imagined were still around. It might still be out there. It might be like finding a needle in a haystack, but it could happen.

Considering ajxpkm is able to verify the legitimacy of Gen 3 Wonder Cards, hopefully we'll have event collectors wanting that done (and be willing to share).

Link to comment
Share on other sites

I've crafted a simple script for emerald to be used on a custom wondercard that enables the EON Ticket event, that in emerald is coded in-game.

When you talk to the person in blue, a picture of the missing lati is shown and its roar played, then the flag for the event is enabled and you can talk again to the man in blue to receive the Eon ticket.

This is not how it was meant to be in any way, but I though it was fun to do while learning a little how scripting works, and as it is a wondercard it can be shared via WiFi to other emeralds. I wouldn't recomend if you worry about the full legitimacy of the savegame though.

http://puu.sh/oMY0J/db012179f0.png

http://puu.sh/oMXYJ/7a9603be13.png

'---------------
#org 0x4
setvirtualaddress 0x8000004
lock
faceplayer
checkflag 0x16B0
virtualgotoif 0x1 0x50
showpokepic 0x198 0x0A 0x03
cry 0x198 0x2
waitcry
waitkeypress
hidepokepic
checkflag 0xD50
virtualgotoif 0x1 0x80
setflag 0xD50
release
end

'---------------
#org 0x50
showpokepic 0x197 0x0A 0x03
cry 0x197 0x2
waitcry
waitkeypress
hidepokepic
checkflag 0xD50
virtualgotoif 0x1 0x80
setflag 0xD50
release
end

'---------------
#org 0x80
release
end

Some flags for emerald I've gathered while researching, just so they don't get lost into nothingness:

- badges flags are stored at 0x3fB section 2, badge 1 flag# is 0x867 and badge 8 flag# is 0x86E

- Selected lati is stored at 0x5c6 section 2 (bit 0, or 0x01), the flag# is 0x16B0

- EON ticket event flag is stored at 0x49A section 2 (bit 0, or 0x01), the flag# is 0xD50.

I know custom scripting in wondercards/mistery event is not the goal of this thread, but I though it was a good example to show what the research has lead to, and also a good example of what the tool I've coded can do.

Link to comment
Share on other sites

Only downside is that I don't think there's a way to add the record mixing item data trough scripting

You could do that with writebytetooffset "value" "RAM offset"

For example the US Eon Ticket.

writebytetooffset 0x33 0x20291B0
writebytetooffset 0x00 0x20291B1
writebytetooffset 0x00 0x20291B2
writebytetooffset 0x00 0x20291B3
writebytetooffset 0x01 0x20291B4
writebytetooffset 0x1E 0x20291B5
writebytetooffset 0x13 0x20291B6
writebytetooffset 0x01 0x20291B7

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...