Jump to content

GSC Save Research Thread


Recommended Posts

14 minutes ago, Holla! said:

Cool, nice find. Forgot that PKHeX can check for Crystal Event Flags.

As for your problem, I don't think there were separate logs per game from what I've seen. (tho I haven't touched upon Mystery Gift stuff for some months now as you can see, so I'm not really sure.)

And these may be the flags for each decoration item(s) for Crystal if they're consistent with each other, but I'm not 100% certain:

676 = Feathery Bed
677 = Pink Bed
678 = Polka Dot Bed
679 = Pikachu Bed
680 = Red Carpet
681 = Blue Carpet
682 = Yellow Carpet
683 = Green Carpet
684 = MagnaPlant
685 = TropicPlant
686 = JumboPlant
687 = Town Map
688 = Pikachu Poster
689 = Clefairy Poster
690 = Jigglypuff Poster
691 = NES
692 = Super NES
693 = Nintendo64
694 = Virtual Boy
695 = Pikachu Doll
696 = Surf Pikachu Doll
697 = Clefairy Doll
698 = Jigglypuff Doll
699 = Bulbasaur Doll
700 = Charmander Doll
701 = Squirtle Doll
702 = Poliwag Doll
703 = Diglett Doll
704 = Staryu Doll
705 = Magikarp Doll
706 = Oddish Doll
707 = Gengar Doll
708 = Shellder Doll
709 = Grimer Doll
710 = Voltorb Doll
711 = Weedle Doll
712 = Unown Doll
713 = Geodude* Doll
714 = Machop Doll
715 = Tentacool Doll
716 = Gold Trophy
717 = Silver Trophy
718 = Big Snorlax Doll
719 = Big Onix Doll
720 = Big Lapras Doll

Now I don't think that there are two separate log lists, it may just be a faulty one (second generation games were so unstable). However, there must be another missing list that checks the items received through IR and prevent them from being deleted if you uncheck the flags from 676 to 720. Did you try to unckeck that flags?
And yes, that's the complete list :)

Link to post
Share on other sites
  • 10 months later...
On 1/29/2018 at 5:29 PM, Lt. Lynx said:

Now I don't think that there are two separate log lists, it may just be a faulty one (second generation games were so unstable). However, there must be another missing list that checks the items received through IR and prevent them from being deleted if you uncheck the flags from 676 to 720. Did you try to unckeck that flags?
And yes, that's the complete list :)

Reading this reminds that when I generate a Pokémon, even though I have the correct name, gender, and ID, the Name Changer detects it as a trade (or something) and does not allow a name change 

 

however if I generate the exact same Pokémon but turn it into an egg, and hatch it in the same area, level, and time, I can change the nickname through the Name Rater, so on top of this undiscovered IR flag issue, it seems there’s also a flag for caught/hatched Pokémon that is not yet implemented in PkHex when generating pokemon

Link to post
Share on other sites
15 minutes ago, OldYoungMan said:

Reading this reminds that when I generate a Pokémon, even though I have the correct name, gender, and ID, the Name Changer detects it as a trade (or something) and does not allow a name change 

 

however if I generate the exact same Pokémon but turn it into an egg, and hatch it in the same area, level, and time, I can change the nickname through the Name Rater, so on top of this undiscovered IR flag issue, it seems there’s also a flag for caught/hatched Pokémon that is not yet implemented in PkHex when generating pokemon

Trash Bytes for Nickname/OT

the game compares the full sequence for the OT name (including trash bytes)

  • Like 1
Link to post
Share on other sites
On 2/22/2019 at 10:59 PM, Kaphotics said:

Trash Bytes for Nickname/OT

the game compares the full sequence for the OT name (including trash bytes)

Ahh, and Gen 2 trash bytes were so insane (and easily Nuked iirc) that it was not even worth trying to implement, right?

Link to post
Share on other sites
6 minutes ago, OldYoungMan said:

Ahh, and Gen 2 trash bytes were so insane (and easily Nuked iirc) that it was not even worth trying to implement, right?

If you click the OT label and have it apply OT details, it'll slap on the savefile's OT trash bytes in addition to the relevant trainer details (gender, geolocation).

To bring up the trash byte editor for a given field (nickname/OT), hold control and click on the textbox.

  • Like 1
Link to post
Share on other sites
51 minutes ago, Kaphotics said:

If you click the OT label and have it apply OT details, it'll slap on the savefile's OT trash bytes in addition to the relevant trainer details (gender, geolocation).

To bring up the trash byte editor for a given field (nickname/OT), hold control and click on the textbox.

Nice! 👍 

is there anywhere else I can read about it instead of just badgering you with questions? Now I’m interested in learning why the language is Japanese among other things 

Link to post
Share on other sites
6 minutes ago, OldYoungMan said:

Nice! 👍 

is there anywhere else I can read about it instead of just badgering you with questions? Now I’m interested in learning why the language is Japanese among other things 

Options->About PKHeX->Shortcuts

Gen1/2 don't store language; PKHeX tries to detect a language if there's any. If there isn't, the combobox's value doesn't change. It's only really there to help you switch a species' language-nickname.

  • Like 2
Link to post
Share on other sites
  • 2 weeks later...
On 2/23/2019 at 11:49 PM, Kaphotics said:

If you click the OT label and have it apply OT details, it'll slap on the savefile's OT trash bytes in addition to the relevant trainer details (gender, geolocation).

To bring up the trash byte editor for a given field (nickname/OT), hold control and click on the textbox.

Whenever I tried to apply trash bytes it says 

"Trash byte layer is hidden by current text

 

Current bytes 6

Layer Bytes 1"

 

and when I try to do the Nickname trash bytes the Current Bytes is 10, and Layer remains 1

 

Do you know what the deal is? 

Link to post
Share on other sites
Just now, OldYoungMan said:

Whenever I tried to apply trash bytes it says 

"Trash byte layer is hidden by current text

 

Current bytes 6

Layer Bytes 1"

 

and when I try to do the Nickname trash bytes the Current Bytes is 10, and Layer remains 1

Do you know what the deal is? 

If the bottom layer is 1 bytes, anything longer than 0 bytes will overwrite the bottom layer.

 

AAAA{terminator}

B{terminator}

results in AAAA{terminator}.

 

AA{terminator}

BBBB{terminator}

results in AA{terminator}B

Link to post
Share on other sites
41 minutes ago, Kaphotics said:

If the bottom layer is 1 bytes, anything longer than 0 bytes will overwrite the bottom layer.

 

AAAA{terminator}

B{terminator}

results in AAAA{terminator}.

 

AA{terminator}

BBBB{terminator}

results in AA{terminator}B

How would I fix this? There’s almost nothing available on GSC trash bytes

Link to post
Share on other sites
On 3/8/2019 at 12:29 PM, Kaphotics said:

https://github.com/kwsch/PKHeX/issues/2261 -- has already been fixed, and will be available in the next release (in the next few days).

Ahh, thanks a ton. I saw that while Googling but since I didn’t see any reply to it, I figured it wouldn’t be fixed. As you can tell I’m not too familiar with how all this works. 

 

Hey man I downloaded and installed the new firmware but I still get the same error message 

 

Bump

//==mod edit: please don’t double post, just edit into your latest unanswered post==/

Hey 2 patches later and it still doesn’t work for me - I think it’s safe to assume the issue is on my end? 

Ive been playing on gen 2 and 3 and it doesn’t work on either 

Link to post
Share on other sites
  • 3 months later...

I found the flag to reactivate the Roamers from the basement of the Burned Tower, in Pokémon GS.

For GS, tested to work on INTL, KOR and JPN version,
and for C, tested on INTL version. [JPN version of event flags doesn't seem to work properly on PKHeX right now]

For GS, Both of these has to be done:

Unset Flag 1867
Event Constant 41: set to 0

For Crystal, Both of these has to be done:
Unset Flag 1867
Event Constant 54: set to 0

  • Like 3
Link to post
Share on other sites
  • 8 months later...

Hello everyone.

Firstly, I'd like to thank you all for your diligent research. You guys are truly amazing!

Secondly, I was wondering if I could get some help locating the offsets related to Unown encounters in both the regular PokeDex and the Unown Dex for Crystal Version. I'm trying to change the PokeDex entry image displayed for Unown to the first one that I caught as opposed to the first one seen. I'm also trying to find away to reset the Unown registered in the Unknown Dex.

I'd greatly appreciate any help.

  • Like 1
Link to post
Share on other sites
  • 10 months later...

Hey, I've been digging into the hall of fame data and I think I have a pretty good handle on JPN and NA offsets. can't test for KOR however sorry. What I can find online says the game stores 30 of these. I only tested up to 8 however.

 

For JPN offsets, GSC use the exact same offsets, a repeating 136 byte chunk for each HoF clear. Pokemon are stored in 22 bytes.

0x32B0 will be the HoF clear number. Each subsequent clear will shift the older HoF clear 136 bytes down the line.

0x32B1 first pokemon's dex number

0x32B2-0x32B3 is the pokemon's trainer ID. trainer name is not stored however.

0x32B4-0x32B5 is the pokemon's IVs.

0x32B6 is the pokemon's level.

0x32B7-0x32BB is the pokemon's name (5 digits for JPN names).

repeat up to 5 more times.

0x32F3 FF terminator byte. 

0x32F4 will be the previous HoF clear and it repeats in descending order.

 

For NA offsets Gold-Silver start at 321A while crystal starts at 32C0. Each HoF clear is stored in 196 bytes. The Pokemon are stored in 32 bytes.

Crystal will be in parentheses.

0x321A (0x32C0) will be the HoF clear number. Each subsequent clear will shift the older HoF clear 196 bytes down the line.

0x321B (0x32C1) first pokemon's dex number

0x321C-0x321D (0x32C2-0x32C3) is the pokemon's trainer ID. trainer name is not stored however.

0x321E-0x321F (0x32C4-0x32C5) is the pokemon's IVs.

0x3220 (0x32C6) is the pokemon's level.

0x3221-0x322A (0x32C7-0x32D0) is the pokemon's name (10 digits for NA names).

repeat up to 5 more times.

0x327B (0x3321) FF terminator byte. 

0x327C (0x3322) will be the previous HoF clear and it repeats in descending order.

 

  • Like 2
Link to post
Share on other sites
  • 2 months later...

 

Hi, first of all, thanks a lot for this research, it's very helpful !

I do have a question regarding this.

Trainer House

Set offset C09 to 01 and offset C2E to FF to properly activate!

Is offset C09 used to specify if the default trainer shall be replaced by another trainer (the latest one having done a mistery gift) and is C2E offset used to specify if the trainer has already been battle during the say (if I remember correctly, the trainer at the trainer house can only be battled once per day, right ?).

 

Hi,

Still related to the trainer house, it seems that the offsets of the data of the 6th pokemon moves are not correct in this thread.

See here : https://hax.iimarckus.org/topic/663/

Trainer House data:

ABFD = Custom trainer? (00 = NO [CAL], 01 = YES)
ABFE = Letter 1
ABFF = Letter 2
AC00 = Letter 3
AC01 = Letter 4
AC02 = Letter 5
AC03 = Letter 6
AC04 = Letter 7
AC05 = Letter 8
AC06 = Letter 9
AC07 = Letter 10
AC08 = END letter
AC09 = ?
AC0A = First enemy level
AC0B = First enemy species  [Cannot be 00, FC, FE, FF. You can battle Eggs without a freeze, as long as they don't have glitch moves, except FD which works here as Substitute but for some reason they won't be at maximum HP]
AC0C = First Pokémon Move 1
AC0D = First Pokémon Move 2
AC0E = First Pokémon Move 3
AC0F = First Pokémon Move 4
AC10 = Second Pokémon level
AC11 = Second Pokémon species
AC12 = Second Pokémon Move 1
AC13 = Second Pokémon Move 2
AC14 = Second Pokémon Move 3
AC15 = Second Pokémon Move 4
AC16 = Third Pokémon level
AC17 = Third Pokémon species
AC18 = Third Pokémon Move 1
AC19 = Third Pokémon Move 2
AC1A = Third Pokémon Move 3
AC1B = Third Pokémon Move 4
AC1C = Fourth Pokémon level
AC1D = Fourth Pokémon species
AC1E = Fourth Pokémon Move 1
AC1F = Fourth Pokémon Move 2
AC20 = Fourth Pokémon Move 3
AC21 = Fourth Pokémon Move 4
AC22 = Fifth Pokémon level
AC23 = Fifth Pokémon species
AC24 = Fifth Pokémon Move 1
AC25 = Fifth Pokémon Move 2
AC26 = Fifth Pokémon Move 3
AC27 = Fifth Pokémon Move 4
AC28 = Sixth Pokémon level
AC29 = Sixth Pokémon species

For some reason, there is a large gap here, where the sixth Pokémon's move begins at AC72 instead of AC2A.

AC72 = Sixth Pokémon Move 1
AC73 = Sixth Pokémon Move 2
AC74 = Sixth Pokémon Move 3
AC75 = Sixth Pokémon Move 4

(Gold and Silver only; unsure of Crystal Pokémon 6 move addresses)

ACB2 (however, now when I test it modifying this address has no effect) = Money (hundreds) [Cannot be in the FC-FF range]

 

Edited by BlueGold
  • Like 1
Link to post
Share on other sites
  • 5 weeks later...
On 4/16/2021 at 3:40 AM, BlueGold said:

it seems that the offsets of the data of the 6th pokemon moves are not correct in this thread.

They worked with no problem on my end.

The OP's data is meant to be done through using a hex editor, while the data you've posted is about SRAM editing.

  • Thanks 1
Link to post
Share on other sites
On 5/15/2021 at 9:17 PM, Canoe said:

They worked with no problem on my end.

The OP's data is meant to be done through using a hex editor, while the data you've posted is about SRAM editing.

OK, thanks a lot for the precision. I missed that important point !

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...