No description
Find a file
Cynthia Coan f2a6abbb6c
validate nickname characters within gen4 (#4382)
pkmnclassic has recently had some pokemon traded that cause game
crashes when viewing the pokemon's information, or when trying to
remove the pokemon for these boxes. most of these pokemon were reported
legal by pkhex however. this fixes the biggest use of these we've seen
actively traded (some of the other checks require more validation, as
they seemed to be buggy, we intend to validate those & send more PRs if
needed).

this check effectively covers "NULL Bytes" within the trainers name,
or the pokemon's nickname. We have attached an example pk4 that was
traded through our service that exhibits this issue, a couple notes:

- Generation 5+ seem to not be affected and replace character names with
  '?'
- Not all screens crash inside of Generation 4, the big ones our users
  noticed were viewing the pokemons information, and removal from the
  boxes.
- I also got a crash in pokemon ranch, but my testing setup was pretty
  hacky, and I'm not confident it wasn't something else, but we know
  it's potentially possible.

- We check for the terminator character '\uffff' which the pkhex string
  converter inserts implicitly when encountering an invalid character,
  but the actual underlying character when performing a hex dump is
  `\0`.
2024-11-11 22:28:01 -06:00
.github Standardize language codes and improve locale handling (#4353) 2024-09-04 18:51:35 -05:00
PKHeX.Core validate nickname characters within gen4 (#4382) 2024-11-11 22:28:01 -06:00
PKHeX.Drawing Update 24.07.03 2024-07-02 23:51:10 -05:00
PKHeX.Drawing.Misc Update 24.07.03 2024-07-02 23:51:10 -05:00
PKHeX.Drawing.PokeSprite Sanity check save file personal info 2024-07-04 18:42:27 -05:00
PKHeX.WinForms Fix Met tab startup binding 2024-11-11 15:11:47 -06:00
Tests/PKHeX.Core.Tests Rework Gen3 Event PIDIV detection & checks 2024-10-16 00:01:10 -05:00
.editorconfig File scoped namespaces (#3529) 2022-06-18 11:04:24 -07:00
.gitattributes Minor changes to git config files 2015-07-21 00:23:50 +02:00
.gitignore Allow some nidoran/volbeat to mismatch correlation 2024-09-05 23:55:46 -05:00
Directory.Build.props Update 24.07.27 2024-07-26 15:38:03 -05:00
icon.png Split up csproj PropertyGroup for nuget metadata (#3492) 2022-05-07 17:30:42 -07:00
LICENSE Split up csproj PropertyGroup for nuget metadata (#3492) 2022-05-07 17:30:42 -07:00
PKHeX.sln Update from .NET Framework 4.6 to .NET 7 (#3729) 2023-01-21 20:02:33 -08:00
README.md Standardize language codes and improve locale handling (#4353) 2024-09-04 18:51:35 -05:00

PKHeX

License

Pokémon core series save editor, programmed in C#.

Supports the following files:

  • Save files ("main", *.sav, *.dsv, *.dat, *.gci, *.bin)
  • GameCube Memory Card files (*.raw, *.bin) containing GC Pokémon savegames.
  • Individual Pokémon entity files (.pk*, *.ck3, *.xk3, *.pb7, *.sk2, *.bk4, *.rk4)
  • Mystery Gift files (*.pgt, *.pcd, *.pgf, .wc*) including conversion to .pk*
  • Importing GO Park entities (*.gp1) including conversion to .pb7
  • Importing teams from Decrypted 3DS Battle Videos
  • Transferring from one generation to another, converting formats along the way.

Data is displayed in a view which can be edited and saved. The interface can be translated with resource/external text files so that different languages can be supported.

Pokémon Showdown sets and QR codes can be imported/exported to assist in sharing.

PKHeX expects save files that are not encrypted with console-specific keys. Use a savedata manager to import and export savedata from the console (Checkpoint, save_manager, JKSM, or SaveDataFiler).

We do not support or condone cheating at the expense of others. Do not use significantly hacked Pokémon in battle or in trades with those who are unaware hacked Pokémon are in use.

Screenshots

Main Window

Building

PKHeX is a Windows Forms application which requires .NET 8.0.

The executable can be built with any compiler that supports C# 12.

Build Configurations

Use the Debug or Release build configurations when building. There isn't any platform specific code to worry about!

Dependencies

PKHeX's QR code generation code is taken from QRCoder, which is licensed under the MIT license.

PKHeX's shiny sprite collection is taken from pokesprite, which is licensed under the MIT license.

PKHeX's Pokémon Legends: Arceus sprite collection is taken from the National Pokédex - Icon Dex project and its abundance of collaborators and contributors.

IDE

PKHeX can be opened with IDEs such as Visual Studio by opening the .sln or .csproj file.