Jump to content

Kaphotics

Helpful Member
  • Content Count

    4,939
  • Joined

  • Last visited

  • Days Won

    38

Kaphotics last won the day on September 18

Kaphotics had the most liked content!

Community Reputation

600 Excellent

About Kaphotics

  • Rank
    how do i hak

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Nothing made them 'become' illegal. They were illegal to begin with -- PKHeX adds new checks every so often. The legality check has flagged them as follows: Invalid: Incorrectly transferred from previous generation. If you look at the source code, that message is saved as "LTransferBad", which is referenced in one check.
  2. The error message contains details on what went wrong. System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\Nick\AppData\Local\Temp\380 - Latias - 43D47CF38197.pk7'. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) Likely your antivirus is preventing PKHeX from creating temporary files, which are used for facilitating drag/drop.
  3. "Complete" needs to be checked, since you've completed training. It's what the legality message is hinting at.
  4. 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)
  5. 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.
  6. 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.
  7. 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); } }
  8. thanks, fixed in latest commit https://github.com/kwsch/PKHeX/commit/0de49c915ac90936928849a479682a937de508a8
  9. 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.
  10. 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.
  11. You likely randomized the starter selection screen and the static gift encounters to have different values.
  12. Shouldn't be an issue on the latest commits, previously fixed: https://github.com/kwsch/PKHeX/commit/1750c69b01508e32281d9ddccd0ed9eda4d8dd66
  13. 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).
  14. 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.
  15. 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.
×