Jump to content

Kaphotics

Helpful Member
  • Posts

    7271
  • Joined

  • Last visited

  • Days Won

    362

Everything posted by Kaphotics

  1. Manual selection is already implemented; hold control when importing to bring up the selection. Version detection isn't perfect for Gen3; PKHeX uses Bulbapedia's detection method which isn't correct. https://bulbapedia.bulbagarden.net/wiki/Save_data_structure_in_Generation_III#Game_Code https://github.com/kwsch/PKHeX/blob/668b8611d51e0e0b28240508026b4c0ae1f1ce33/PKHeX.Core/Saves/Util/SaveUtil.cs#L230-L249 The ROM disassembly indicates that this offset isn't game code: https://github.com/pret/pokeruby/blob/51ecf10029f84dd5423cd59582d01eaee9140c0e/include/global.h#L822-L844 In the future it'd be nice to have a more foolproof detection, but for now, just override if it's incorrectly detected. (edit: future versions of pkhex will have improved detection logic for RS<->E differentiation)
  2. There's no way to modify the Catch Rate byte unless you trade it to Gen2. If the Catch Rate value does not match any of the possible encounter species, it's not valid (it can't ever be changed). Since the value is different, it was modified, hence flagged.
  3. DebutGeneration only uses species ID and compares it against the maximums for each generation. It doesn't pay attention to the current AltForm value. The current behavior is simple, adding in consideration for forms will greatly increase the complexity required.
  4. Per the source code, the "Lips" value is two bits (0-3), however, if invalid values cause the game to panic and reset, there's nothing the Save Editor can do to avoid that: public class Fashion6Female : TrainerFashion6 { public Fashion6Female(byte[] data, int offset) : base(data, offset) { } public uint Version { get => GetBits(data0, 0, 3); set => data0 = SetBits(data0, 0, 3, value); } public uint Model { get => GetBits(data0, 3, 3); set => data0 = SetBits(data0, 3, 3, value); } public uint Skin { get => GetBits(data0, 6, 2); set => data0 = SetBits(data0, 6, 2, value); } public uint HairColor{ get => GetBits(data0, 8, 3); set => data0 = SetBits(data0, 8, 3, value); } public uint Hat { get => GetBits(data0, 11, 6); set => data0 = SetBits(data0, 11, 6, value); } public uint Front { get => GetBits(data0, 17, 3); set => data0 = SetBits(data0, 17, 3, value); } public uint Hair { get => GetBits(data0, 20, 4); set => data0 = SetBits(data0, 20, 4, value); } public uint Face { get => GetBits(data0, 24, 3); set => data0 = SetBits(data0, 24, 3, value); } public uint Arms { get => GetBits(data0, 27, 2); set => data0 = SetBits(data0, 27, 2, value); } public uint _0 { get => GetBits(data0, 29, 2); set => data0 = SetBits(data0, 29, 2, value); } public uint Unused0 { get => GetBits(data0, 31, 1); set => data0 = SetBits(data0, 31, 1, value); } public uint Top { get => GetBits(data1, 0, 6); set => data1 = SetBits(data1, 0, 6, value); } public uint Legs { get => GetBits(data1, 6, 7); set => data1 = SetBits(data1, 6, 7, value); } public uint OnePiece { get => GetBits(data1, 13, 4); set => data1 = SetBits(data1, 13, 4, value); } public uint Socks { get => GetBits(data1, 17, 5); set => data1 = SetBits(data1, 17, 5, value); } public uint Shoes { get => GetBits(data1, 22, 6); set => data1 = SetBits(data1, 22, 6, value); } public uint _1 { get => GetBits(data1, 28, 2); set => data1 = SetBits(data1, 28, 2, value); } public uint Unused1 { get => GetBits(data1, 30, 2); set => data1 = SetBits(data1, 30, 2, value); } public uint Bag { get => GetBits(data2, 0, 5); set => data2 = SetBits(data2, 0, 5, value); } public uint AHat { get => GetBits(data2, 5, 5); set => data2 = SetBits(data2, 5, 5, value); } public bool Contacts { get => GetBits(data2, 10, 1) == 1; set => data2 = SetBits(data2, 10, 1, value ? 1u : 0); } public uint Mascara { get => GetBits(data2, 11, 2); set => data2 = SetBits(data2, 11, 2, value); } public uint EyeShadow { get => GetBits(data2, 13, 2); set => data2 = SetBits(data2, 13, 2, value); } public uint Cheek { get => GetBits(data2, 15, 2); set => data2 = SetBits(data2, 15, 2, value); } public uint Lips { get => GetBits(data2, 17, 2); set => data2 = SetBits(data2, 17, 2, value); } public uint ColorContacts { get => GetBits(data2, 19, 3); set => data2 = SetBits(data2, 19, 3, value); } public uint ColorMascara { get => GetBits(data2, 22, 3); set => data2 = SetBits(data2, 22, 3, value); } public uint ColorEyeshadow{ get => GetBits(data2, 25, 3); set => data2 = SetBits(data2, 25, 3, value); } public uint ColorCheek { get => GetBits(data2, 28, 3); set => data2 = SetBits(data2, 28, 3, value); } public uint Unused2 { get => GetBits(data2, 31, 1); set => data2 = SetBits(data2, 31, 1, value); } }
  5. thanks, fixed in latest commit https://github.com/kwsch/PKHeX/commit/0de49c915ac90936928849a479682a937de508a8
  6. Thanks for reporting, fixed in latest commit https://github.com/kwsch/PKHeX/commit/e77247e6526fd9abb1c81160b02d5c40bb7f2fef I've updated the .exe that is posted with the fix.
  7. Ingame trades have a different catch rate than the species' default catch rate. https://github.com/kwsch/PKHeX/blob/master/PKHeX.Core/Legality/Encounters/Data/Encounters1.cs#L166-L170 new EncounterTradeCatchRate { Species = 075, Level = 16, Catch_Rate = 45, EvolveOnTrade = true, Version = GameVersion.RBY }, // Graveler - Evolve Kadabra new EncounterTradeCatchRate { Species = 067, Level = 16, Catch_Rate = 180, EvolveOnTrade = true, Version = GameVersion.RBY }, // Machoke - Wild Cubone Program is working as intended.
  8. You likely randomized the starter selection screen and the static gift encounters to have different values.
  9. Shouldn't be an issue on the latest commits, previously fixed: https://github.com/kwsch/PKHeX/commit/1750c69b01508e32281d9ddccd0ed9eda4d8dd66
  10. Pay attention to the program title, it indicates the version of the save file. You've likely used a cheat code which breaks the detection, which results in PKHeX assuming it to be RS (Ruby Sapphire).
  11. Because some are legal, and some are not. Certain encounters have certain PID restrictions (ie a Starter / Stationary encounter must be Method 1) while wild encounters can be Method 1/2/4. The method-1 only encounters are generated fast enough on actual hardware, but the emulator does not generate the pkm fast enough and gets interrupted, resulting in method 2 & 4. Wild encounters need to wait for a valid PID (nature/gender) which can also be interrupted by the screen needing to refresh.
  12. Some emulators do not faithfully emulate the CPU timings present on the console, resulting in different PIDIVs sometimes. The PKM are not legal as they cannot be encountered on legitimate hardware. PKHeX is working correctly.
  13. Re-dump the ROM content and start over, the data the program is trying to read is not valid. You can always copy over individual modified garcs, assuming they are from the same game and aren't corrupt.
  14. Read the comment section. He screwed up the tutorial steps. There are pages and pages of ppl asking the same thing about personal stats / etc not working, when every error message contains "3DS Randomizer Pack"; please read previous pages!
  15. Kaphotics

    bug in last update

    Has to be uppercase; decapitalization on non-nicknamed species didn't come until later generations.
  16. Kaphotics

    bug in last update

    Can't transfer held items via pokebank Old Amber is unobtainable in all Gen7 games, thus you can't ever revive Old Amber into Aerodactyl. Just because the encounter is obtainable doesn't mean the conditions are legal!
  17. Kaphotics

    bug in last update

    You can't revive Old Amber in SM/USUM.
  18. Should now import fine on latest commits
  19. Should be fixed on latest commit https://github.com/kwsch/PKHeX/commit/1fe304e78f6578c32f5b4d782ca3022e6ec23225
  20. Please post examples
  21. Thanks, fixed in latest commit. https://github.com/kwsch/PKHeX/commit/c6e4c39bc5dd94d40e07fc445e6162ff95074ce8 @theSLAYER Re: Strength, the line has an unsupported character at the end (which is invisible). Trim() won't remove the invalid character . For whatever reason, 0xFEFF snuck its way into that line?
  22. Cool, exclusion added: https://github.com/kwsch/PKHeX/commit/ebae14e6ad476cef85610373a314d527edd13972 Thanks for reporting
  23. If the language ID is fixed to Japanese, it should have the Japanese default name, no? Are there previous language locked wondercards that exhibit this behavior? Are you referring to the wc*->pk* process, or the legality checking not allowing this nickname case?
  24. Duh, you can't change IVs in-game. Defense and Speed are locked to 30. new EncounterStatic { Species = 132, Level = 29, Location = 072, IVs = new[] {-1,31,30,30,-1,-1}, Nature = Nature.Adamant }, // Ditto @ Konikoni City Not a bug; working as intended.
  25. Done, thanks for reporting https://github.com/kwsch/PKHeX/commit/538e90dd858abada5de9b76d204b2a9a362b2d1e
×
×
  • Create New...