Update 26.01.31

This commit is contained in:
Kurt 2026-01-31 20:41:14 -06:00
parent 4a3157a8a2
commit df89337cb2
8 changed files with 369 additions and 322 deletions

View File

@ -1,6 +1,6 @@
<Project>
<PropertyGroup>
<Version>26.01.22</Version>
<Version>26.01.31</Version>
<LangVersion>14</LangVersion>
<Nullable>enable</Nullable>
<NeutralLanguage>en</NeutralLanguage>

View File

@ -3,6 +3,9 @@
namespace PKHeX.Core;
/// <summary>
/// Item storage for <see cref="EntityContext.Gen9a"/>
/// </summary>
public sealed class ItemStorage9ZA : IItemStorage
{
public static readonly ItemStorage9ZA Instance = new();

View File

@ -1,7 +1,12 @@
PKHeX - By Kaphotics
http://projectpokemon.org/pkhex/
26/01/22 - New Update:
26/01/31 - New Update:
- Legality: Swampertite now released, can exist in inventory/held.
- Added: Gen9a handling for 9,999 Mega Shards.
- Fixed: Showdown Set parsing now recognizes IVs/EVs entered in non-standard order.
26/01/22 - New Update: (84569) [12387981]
- Added: Gen9a file size recognition for Z-A patch 2.0.1
- Legality:
- - Changed: Height/Weight/Scale messages now show the expected value, when applicable.
@ -217,307 +222,3 @@ http://projectpokemon.org/pkhex/
- Changed: Gen3 RSBox now shows boxes similar to visual row order in-game rather than by order in the save file.
- Changed: Sprite generating performance improved (less allocation).
- Changed: Encounter template generating loops have been improved to better seek input criteria (IVs, nature, etc).
24/11/11 - New Update: (345549) [9656226]
- Legality:
- - Added: Gen3/4 Nidoran eggs now recognize their PID correlation. Thanks @abcboy101 !
- - Added: Gen7 LGPE crossover locations added. Thanks @Lusamine !
- - Changed: Gen3 event recognition enhanced to verify OT genders and complete PID/IV correlations. Thanks @kamronbatman !
- - Fixed: Gen3 encounter slots now generate & recognize their encounter conditions more accurately. Thanks @ymaniz09 & TFS!
- Added: Encounter Database: New setting to enable displaying detailed information about each template on hover.
- Added: Encounter Database, mgdb: New tab to allow toggling settings used when generating templates.
- Added: PKM Database: New tab to allow toggling settings used when searching. Requires reopening the form.
- Added: Gen9 SV personal data now exposes the computed BaseEXP property instead of 0.
- Added: Gen6/7/SWSH trainer editor can now change the save file's trainer gender, by updating model data. Thanks @abcboy101 !
- Added: Gen5 DLC editor added. In addition to the C-Gear skin editor, can load/export Musicals, Pokedex skins, Battle Videos, etc!
- Added: Gen5 DLC supports reading/writing the never-distributed Battle Test data.
- Added: Gen5 misc editor can now change more Battle Subway properties. Thanks @Mowstyl !
- Added: Gen3 misc editor can now change Lilycove Museum paintings (RNG abuse). Thanks @pasqualenardiello !
- Added: Gen2 misc editor for Crystal added button to enable the GS Ball event.
- Added: Gen2 mail formats now read/write for all languages. Thanks @abcboy101 !
- Fixed: Complete Dex cheat (BDSP, SV, etc) now retains already set shiny flag records for entries. Thanks @TankedThomas !
- Fixed: Partner Ribbon now shows up in the Affixed Ribbon list.
- Fixed: Met tab now loads Version/Location correctly when starting up with a RBY save and loading a future game save.
- Fixed: Gen8 BDSP Manaphy egg now generates correctly.
- Fixed: Gen4 HGSS box modification corruption on single in-game save issue fixed. Thanks @Lusamine, @gingrentse, @WonderSquid !
- Fixed: Gen3 GameCube OT names that are 7 characters long now convert to PK3 correctly.
- Changed: Gen5 C-Gear Skins loaded from image files no longer completely fail when too many tiles, instead showing partial results.
- Changed: Errors generated by plugins are now more clearly indicated that they are caused by the plugin, for error reporting.
24/07/27 - New Update: (353225) [9310677]
- Legality:
- - Added: Most Gen3 events from Japan are now recognized.
- Fixed: Gen6 box name editing now edits the right offset. Thanks @javierhimura !
- Fixed: Other small regressions/oddities reported have been resolved.
- Fixed: Save files with uncommon appended footer types no longer cause issue when saving/closing subforms.
24/07/03 - New Update: (82341) [8957452]
- Legality:
- - Added: Slot source legality checks for miscellaneous slots like Daycare. Shouldn't flag anyone ;)
- Added: Gen4 trainer stat record editor. Thanks @abcboy101 !
- Added: Gen3 memory cards can now be auto-detected as the latest save file on startup/request.
- Added: Gen3 Berry Powder, Pokéblock, and Decoration editors. Thanks @abcboy101 !
- Fixed: Gen9 eggs now no longer auto-clear trash bytes for nicknames (and no longer flag in doing so).
- Fixed: Gen5 misc editor now opens correctly for editing the Key system.
- Fixed: Gen4 pk4->ranch conversion no longer throws an error.
- Fixed: Gen4 battle revolution nickname/OT now reads correctly.
- Fixed: Gen1-3 saves with misc footers are retained as intended.
- Changed: Some internals changed to better work with web browsers (wasm). Thanks @arleypadua !
- Changed: Resource fetching abstraction extracted for better reuse with plugins.
24/06/03 - New Update: (96798) [8875111]
- Legality: Added automatic (basic) Trash Byte checks for Switch-era (Gen7b+) files. Further refinement & expansion in the future.
- - Fixed: Mystery gifts distributed with nicknames no longer flag IsNicknamed as invalid.
- Added: Entity editor move dropdown now displays the move's type on the left side.
- Added: Entire boxes can be dragged & dropped. Must enable via setting as it is not intuitive. Drag from the Box tab rectangle.
- Added: Report grid can now specify extra properties to show, as well as properties to hide. Change via settings.
- Added: Gen1-3 save file language/version detection updated for more edge cases.
- Added: Gen2-5 localization text files added for less popular languages. Thanks @abcboy101 !
- Added: Gen3 GBA<->GC string conversion logic to handle special text entry. Thanks @abcboy101 !
- Added: Gen4 Seal/Accessory/Backdrop editors. Thanks @abcboy101 !
- Added: Gen5 Geonet/Unity Tower can now edit country/region data. Thanks @abcboy101 !
- Fixed: Gen6/7 entities now save the volatile status effect rather than wiping it (see previous release notes).
- Fixed: Gen3-7 Nidoran/Farfetch'd text char quirks updated to better align with GameFreak's mess.
- Fixed: Gen1/2 quirks with box data have been rewritten and resolved.
- Changed: Gen1-3 emulator save formats that store RTC data are now detected more reliably.
- Changed: More performance improvements as always! Additionally, translations can now handle Enum localization.
24/05/05 - New Update: (101440) [8778313]
- Legality: Added Regulation G.
- Added: Entity editor can now modify battle-Status effects (Burn, Paralyze, etc). Click the bottom right corner of the window for the GUI.
- Added: Gen5 trainer records can now be edited via Misc editor. Not documented well, but exposes the values for editing.
- Added: Gen1-3 games now detect language/version based on the save file name. If not detected, can be overridden via settings before loading.
- Added: Gen1 can now show an Entity's gender if enabled via settings, using Gen2 IV gender determination logic.
- Fixed: Gen7 Chinese species names now write correctly.
- Fixed: Gen6 OR/AS DexNav count read/write fixed.
- Fixed: Gen3 trash bytes now reference the Entity for translating the string, rather than the save file.
- Fixed: Gen2 Box Names now read/write ligatures correctly.
- Fixed: Gen1/2 box data now retains empty slot data instead of reformatting into empty box lists (glitching friendly).
- Changed: Legality settings have been extracted to a more easily customized settings object.
- Changed: Translations updated for Chinese & Japanese. Thanks @ppllouf & @902PM !
24/03/26 - New Update: (139375) [8676873]
- Legality:
- - Fixed: Handled some edge cases with latest release RNG Frame checks for Gen4.
- - Added: Verification for Gen3 CHANNEL and MYSTRY seed patterns.
- Added: Gen4/5 API now supports reading/writing battle videos to the savefile object.
- Fixed: Gen5 Entree Forest in Misc now saves correctly. If broken, open the editor on the previous release and save again.
- Fixed: Event Flag diff now works as intended. Pokedex button restored for some save formats (regression from last release).
- Changed: Plugin error messages will now more clearly indicate they are an issue with plugins rather than PKHeX's fault.
- Fixed: Gen4 Daycare seed set now works as intended, no longer corrupts Daycare slot 2.
- Fixed: Gen4 Mystery Gift now reads correctly.
24/03/10 - New Update: (61116) [8537498]
- Legality: Added Encounter Slot RNG correlation checks for Gen4 (and Gen3). Because Encounter Type PID mismatch wasn't enough!
- - When hovering over a slot, the program will indicate a possible method to encounter the slot with a lead & initial seed (not Method 1).
- - Added: Gen8+ RNG seeds that are 64bit correlation (like SW/SH raids) will now indicate the detected RNG seed.
- - Added: Gen1/2 Event Gifts are now recognized completely. Thanks @ShadowMario3!
- Changed: Save Block handling reworked to better match the real game behavior of managing chunks of memory. Thanks @foohyfooh!
- Added: Out-of-bounds text entry characters are now indicated with a [?] next to the Nickname/OT text entry. Thanks @abcboy101!
- Added: Batch Editor commands are kept when the window is closed, while the program remains open.
- Added: Loading empty save files (all 00 or FF) will now give a more detailed error message indicating failure.
- Added: More games indicate Daycare status completely. Maybe editing in the future?
- Added: Gen1/2 NSO save files are now able to be loaded, edited, and exported without needing an external tool.
- Added: Gen2 player color palette now editable via Block Data editor. Thanks @Bl4ckSh4rk!
- Added: Gen4/5 Battle Videos can now be extracted & interacted with via PKHeX.Core API code.
- Fixed: Gen3 FR/LG National Dex unlock fixed. Thanks @Bl4ckSh4rk!
- Fixed: Gen9 Alcremie formarg handling for Pokédex fixed. Thanks @sora10pls!
24/01/12 - New Update: (390462) [8476382]
- Legality: Added Mochi Mayhem Pecharunt, Regulation F, and Blaziken Tera Raid recognition.
- - Fixed: Level 100 encounters that were evolved in S/V with level-up methods (Eevee, Magikarp) now recognize correctly.
- - Fixed: Gen1/2 transfers to Gen7+ will now recognize filtered OT names as valid. Thanks @abcboy101!
- - Fixed: Recognition of Gen8 Hidden Ability patched raids now works as intended.
- - Fixed: Recognition of Gen8+ GO encounters that evolve via form arguments now are recognized as intended.
- Added: MarkingCircle/Triangle/Square/etc now reimplemented, able to be used in Batch Editor commands.
- Added: Gen1/2 transfers to Gen7 can now override the default transfer version via program settings.
- Fixed: Gen9 Stellar type can now be set via Batch Editor with its corresponding type value (99).
- Fixed: Hover preview custom tooltip shows Hidden Power type correctly (was off by 1).
- Changed: Box Dump now uses a GUI to allow changing settings with more flexibility.
23/12/22 - New Update: (156280) [8085920]
- Legality: Updates for Scarlet & Violet 3.0.0 behaviors revised to fix inaccuracies.
- - Fixed: Recognition of marks, stellar fixed encounters, and underdepths encounters.
- - Gold Bottle Cap on flawless IVs in S/V is now flagged; upload to HOME & back to get the official fix.
- Fixed: Gen9 S/V 7-Star Raid records now can be edited with the revised raid block editor. Thanks @foohyfooh!
- Fixed: Other misc regressions too insignificant to note (but observed & reported by many -- thanks!)
23/12/18 - New Update: (55399) [7929640]
- Changed: PKHeX now uses .NET 8 for its runtime (updated from .NET 7)!
- - Requires Windows 64bit operating system, with the .NET Desktop Runtime 8.0.x
- - https://dotnet.microsoft.com/en-us/download/dotnet/8.0
- Added support for Scarlet & Violet 3.0.0 (Indigo Disk)
- Legality: Added encounters / changes as per Indigo Disk DLC adjustments.
- - Will still have issues with crossovers, Minior, and encounter locations. Will be addressed next release.
- - Fixed: Gen4 Manaphy PID rerolling behavior updated. Thanks @Lincoln-LM!
- Added: Hover preview now shows a custom preview tooltip. Old behavior can be reverted to via settings.
- Added: Gen6-9 map position/rotation editing. Thanks @abcboy101!
- Added: Gen6 XY Roamer editor. Thanks @foohyfooh!
- Added: Gen5 Musical Prop editor. Thanks @foohyfooh!
- Added: Gen4/5 Chatter editor. Thanks @abcboy101!
- Added: Gen4 KOR<->INT/JPN converter for save files. Thanks @abcboy101!
- Added: Gen2 Mystery Gift item / unlock flag editing. Thanks @RainingChain!
- Fixed: String conversion has been rewritten for easier maintenance. Future updates will handle Farfetch'd and other cases better.
- Fixed: Gen6/7 country/region names for the latest 3DS region manifest. Thanks @abcboy101!
- Fixed: Gen4 Pokétch Unlock cheat updates the total count of apps now. Thanks @foohyfooh!
- Fixed: Gen4 Complete Dex cheat updates female-only bitflags correctly now. Thanks @DeadSkullzJr!
- Fixed: Gen3 Colosseum Fateful Encounter flags now read/write correctly based on Japanese/International save file context.
- Fixed: Gen3 Mainline saves update party Mail indexes when lacking a mail held item (prevents invalid mail icon).
- Fixed: Gen1 RBY saves that have not yet received a starter now differentiate correctly. Thanks @fattard!
23/10/11 - New Update: (294546) [7874241]
- Added support for Scarlet & Violet 2.0.2 save file sizes.
- Legality:
- - Badwords list has been updated to be more strict per latest Nintendo Switch 16.0.0 firmware. Thanks @Bl4ckSh4rk!
- - Gen9 Distribution Outbreaks now recognized. Thanks @Lusamine & @sora10pls!
- - Gen9 Crossover met location logic tweaked for better location identification in Kitakami.
- - Gen4 Pokéwalker IV spreads are now validated. Thanks @Lincoln-LM & @HappyLappy1!
- Added: Gen8 SW/SH adventure start date can now be changed in the Trainer Editor. Thanks @foohyfooh!
- Added: Gen4 Pokeathlon Points can now be edited via the Block Editor.
- Fixed: Initial program startup now notifies all plugins when a save is loaded on startup.
23/09/25 - New Update: (100007) [7579695]
- Added support for more Scarlet & Violet 2.0.1 save file sizes.
- Legality: Added more Kitakami encounters (sub-zones) and basic weather mark recognition.
- Fixed: Encounter template recognition regressions resolved (Gen4 Pokewalker, Gen9 static encounter scale).
- Fixed: Gen9 S/V Pokédex for 2.0.1+ save files now references a new save file block & GUI editor.
- Added: Gen9 TM/Fly cheats now check for if a flag exists for pre-2.0.1 save files.
- Added: Gen9 Fashion unlock cheat now adds 2.0.1+ fashion if available.
23/09/16 - New Update: (112092) [7479688]
- Added support for Scarlet & Violet 2.0.1 (Teal Mask)
- Legality: Added encounters / changes as per Teal Mask DLC adjustments.
- - May still have issues with crossovers / hidden ability permissions.
- - Changed: Evolve-Knowing-Move criteria has been rewritten for better side-game checks & accuracy.
- - Changed: More encounter generator fixes implemented (missed a few properties).
- Fixed: Gen9 Pokédex clearing individual entries now only wipes the entry instead of everything that follows. Thanks @Alexander3a !
- Fixed: Gen5 CGear Skin importing now gives the correct error message when too many unique tiles are imported.
23/08/23 - New Update: (160296) [7367596]
- Legality: Added realtime RNG correlation checks for most SW/SH raids. Thanks @SciresM & @Lusamine !
- - Note: Seed details do not trickle out to the verbose legality report at this time since seeds are 64bit (not 32bit).
- - Added: The encounter generator / matching API has been refactored for better performance and maintenance.
- - Fixed: More evotree edge cases have been resolved since the last update.
- - Fixed: Gen4 Move Tutor now permits correctly for alternate forms.
- - Fixed: Gen2 Union Cave B2F fishing slots are now recognized correctly.
- - Fixed: Gen1/2 SID check no longer indicates "Fishy" when SID is correctly zero.
- Added: Technical Record editor now indicates yellow for record indexes that can be legally learned by a previous evolution.
- Added: Gen9 origin Transfers back to PK9 format now regenerate with legal values that would be sourced from HOME.
- Fixed: Gen9 Hoopa-Unbound no longer sets a FormArgument value of 3 whenever set back to box slots.
- Fixed: Gen7 US/UM relearn moves now properly show in all PK7s when loaded to tabs.
- Fixed: Gen5 CGear Skin handling now behaves correctly for importing & saving skins.
- Fixed: Pokérus strains now indicate correctly again in the PKM Editor GUI.
23/07/09 - New Update: (225659) [7207300]
- Legality: Updated evolution checking algorithms to better identify game visitation. Thanks @Lusamine & @sora10pls !
- - Added: HOME 3.0.0 move sharing logic for learning moves via HOME instead of in-game.
- - Added: HOME 3.0.0 ball inheritance logic for breeding encounters for/from Scarlet/Violet.
- - Added: GO Master Ball legality checks now allows Master Ball when encounter date & type permits.
- - Added: GO encounters outside the availability window now display a detailed illegal message.
- Added: Gen4/5 Geonet/Unity Tower editor. Thanks @abcboy101 !
- Changed: Gen9 Tera Type icons now use higher quality sprites from HOME. Thanks @sora10pls !
- Changed: Gen8a Move Shop editor GUI has been redesigned for a more visual experience.
- Changed: Gen7b+ Height/Weight now show as gray whenever Scale takes precedence in sizing determinations.
- Fixed: Batch Editor filters now work correctly for Box/Slot when using operators other than ! or =
- Fixed: Gen7b Randomize IV/AV buttons now center correctly within the form.
- Fixed: Gen7 Report grid now shows Resort (Poké Pelago) slots correctly.
- Fixed: Gen6/7 Memory Editor now shows Country/Region visitation correctly.
- Fixed: Gen6 Hall of Fame editor now keeps leading zeroes on the TID/SID entry fields.
- Fixed: Gen5 unused second Roamer block editor editing now reads from the correct offsets. Thanks SaltedNeos !
- Fixed: Gen4 Ranch checksums are now applied correctly again. Thanks @Zazsona !
- Fixed: Gen3 adding Ferry Tickets no longer causes the program to error when your Key Items bag is full.
- Fixed: Gen2 International Crystal saves now set the backup checksum to the correct offset. Thanks @Zazsona !
23/06/03 - New Update: (178908) [6981641]
- Added: HOME 3.0.0 initial support. Legality analysis is still under research. Thanks @Lusamine & @sora10pls !
- - Lacks full support for cross-game transfers involving evolutions and moves. Please be patient, there's a lot of things to handle!
- Added: Tech Record editor GUI has been redesigned for a more visual experience. Can now sort alphabetically, owned, or move type.
- Added: Gen9 S/V clothing "cheats" have been added to the Trainer Editor window. Thanks @pasqualenardiello!
- Fixed: Small regressions in item list permissions.
- Changed: Gen7 Totem Form sprites now display with an Orange-colored glow, similar to Gen3 C/XD shadow purple.
- Changed: DPI scaling adjusted for better appearance on high resolution monitors.
23/05/11 - New Update: (80094) [6802733]
- Legality:
- - Changed: Creating a new PKM from template will set current moves same as the games.
- - Changed: Pokérus strains 0 & 8 now permitted due to official implementation errors in Gen2 & Gen3.
- - Fixed: Encounters crossing over into Mesagoza (location 8) are no longer permitted (vertical distance).
- - Fixed: TSV=0 HOME accounts are now permitted to exist, and antishiny XOR for the fixed PID gifts now behaves correctly.
- Added: Batch Editor filter commands can now reference other property values (aka "property copy") like modify commands.
- - To copy a property, specify like so: `.Stat_ATK=*Stat_DEF`
- - To filter based on the value of another property, same way.
- Added: Moves that have changed elemental type over generations will now indicate their type per the save file context.
- Added: Gen9 Player Image visualizer now shows the profile photos in the Trainer Editor. Thanks @pasqualenardiello !
- Added: Gen7 LGPE can now unlock all fashion via the Trainer Editor.
- Added: Gen5 Block editor now shows both roamer objects (Thundurus and Tornadus).
- Fixed: Gen9 scale indicators now reflect the >=1.1.0 patch scale thresholds. Thanks iD3M0N1C!
- Fixed: Gen5 C-Gear Skin no longer retains a file lock on imported skin image files.
- Fixed: Gen3 Memory Cards can now be detected as the latest save file, as well as a backup-file source for the pkmdb.
- Fixed: Gen3 XD un-purified shadow Pokémon no longer flag w/o Ribbon if they have a Shadow Gauge of 0 (ready to purify).
- Changed: Sub-form scaling mode changed to "Inherit" -- added a Display setting to revert back to Form scaling (from Dpi).
23/04/06 - New Update: (166321) [6722639]
- Legality:
- - Changed: Vivillon 3DS Region handling reworked to handle all regions. Thanks @abcboy101!
- - Fixed: BDSP footprint ribbon now checks correctly.
- - Fixed: Gen4 Pokéwalker course captures are now allowed for all versions.
- Added: PKM Editor now shows the elemental type for Moves.
- Added: PKM Editor now shows affixed ribbon (or if one can be affixed) on the cosmetic tab.
- Added: Click the affixed ribbon indicator to open the ribbon editor (same as button).
- Added: Click a ribbon sprite in the ribbon editor to quickly affix it.
- Added: SV enrollment date can now be changed via Block Editor. Thanks @foohyfooh!
- Added: More Gen3 Mystery Gift API functionality added. Thanks @Bl4ckSh4rk!
- Fixed: Importing Mystery Gifts to the SaveFile's Mystery Gift list GUI's 11th slot now works as intended.
- Fixed: Gen4 Manaphy Egg now generates correctly from the Encounter Database.
- Fixed: Gen4/5 Country/Region no longer throws an error for certain countries.
- Fixed: Gen1/2 stats now calc correctly (perfect square-root EVs)
- Changed: Updated handling to correctly generate and verify size of WC9 entities.
- Changed: More performance improvements reducing allocations.
23/02/27 - New Update: (186209) [6556318]
- Added: Support for S/V 1.2.0
- Added: SV style menu sprites for all species/forms. Thanks @sora10pls & @SciresM!
- Added: Gen5 Black/White City data can now be imported/exported, and Roamer status can be reset. Thanks @frefire!
- Added: Gen4/5 Geonet Location save file settings can now be viewed/changed. Thanks @abcboy101!
- Added: Gen4 Ranch now supports Toys from the Platinum game update. Thanks @Zazsona!
- Fixed: PKMEditor sidebar tab scaling now works on operating systems with scaling > 1. Thanks @Manu098vm!
- Fixed: Batch Editor string screening (ex. requesting ".Species=Pikachu" instead of 25) now works again.
- Fixed: Nature stat amplification clicks on the Stats tab now alters the amps correctly.
- Fixed: Update Available link now works as intended on .NET 7
- Fixed: Gen6 X/Y Pokéflute is no longer removed from Key Items as it can temporarily exist.
- Fixed: Gen5 C-Gear Skins now read/write correctly (again).
- Fixed: Gen3 Colosseum save files now generate valid savedata hashes on export.
- Fixed: Gen2 OT Names now edit save correctly when edited. Thanks @Zazsona!
- Changed: Shiny Sprite icon now shows as a larger icon, with Xor0 being subtly different. Thanks @Lusamine!
- Changed: GUI Translations updated. Thanks @ppllouf, @wubinwww, @mi-ya1987, @Manu098vm!
- Accessibility:
A few changes have been made to assist screen readers, notably:
PictureBox slots representing data (Pokémon, Mystery Gifts, etc) now draw a focus border, and can be tabbed between.
The focus border can be disabled via settings by setting the indentation to -1.
Added accessibility narration strings for specific controls.
23/01/30 - New Update: (153698) [6370109]
- Fixed: Mystery Gift files now recognize via extension correctly.
- Fixed: Gen9 Pokédex bitflag get/set fixed (remapped species ID).
- Changed: GUI translations updated. Thanks @ppllouf, @riruo, @mi-ya1987 !
23/01/26 - New Update: (33425) [6216411]
- Changed: PKHeX now uses .NET 7 for its runtime (updated from .NET Framework 4.6)!
- - Requires Windows 64bit operating system, with the .NET Desktop Runtime 7.0.x
- - https://dotnet.microsoft.com/en-us/download/dotnet/7.0
- - For those wanting to run the program from a Mac/Linux machine, use a Windows VM. No more mono/wine support.
- - This change results in a faster program, and being able to write more modern & extensible C# code.
- Changed: The Main Window layout has been adjusted for better GUI scaling support:
- - PKM Editor now uses vertical tabs, and some controls have moved to more appropriate tabs.
- - PKM Editor now has a "Cosmetic" tab, which contains low significance values like Contest Stats.
- - PKM Editor now has a simple selector for Handling Trainer selection rather than the background highlights.
- Legality:
- - Fixed: A few recognition bugs have been fixed. Thanks @Lorenzooone!
- Batch Editor:
- - Added: Batch Editor can now filter with >/≥ and </≤ operators, improved from just != and =.
- - Added: Ribbon and Mark count properties added. Can now sort boxes by these counts!
- - Changed: TID/SID properties renamed; when using 16-bit trainer IDs, use TID16/SID16.
- Changed: Gen9 S/V no longer show the Square Shiny icon, as Xor0 no longer indicates differently in-game.
- Changed: Gen9 S/V raid parameter editor "Set All 6 Star" changed to "Copy current values to Other Raids".
- Changed: With the update to .NET 7, some features have been rewritten for better performance, or for better usage.
- Changed: GUI translations updated. Thanks @Manu098vm, @Kitcham, @easyworld, @jimmyorz, @Bl4ckSh4rk, @ppllouf, @butaneeeee!

View File

@ -0,0 +1,303 @@
24/11/11 - New Update: (345549) [9656226]
- Legality:
- - Added: Gen3/4 Nidoran eggs now recognize their PID correlation. Thanks @abcboy101 !
- - Added: Gen7 LGPE crossover locations added. Thanks @Lusamine !
- - Changed: Gen3 event recognition enhanced to verify OT genders and complete PID/IV correlations. Thanks @kamronbatman !
- - Fixed: Gen3 encounter slots now generate & recognize their encounter conditions more accurately. Thanks @ymaniz09 & TFS!
- Added: Encounter Database: New setting to enable displaying detailed information about each template on hover.
- Added: Encounter Database, mgdb: New tab to allow toggling settings used when generating templates.
- Added: PKM Database: New tab to allow toggling settings used when searching. Requires reopening the form.
- Added: Gen9 SV personal data now exposes the computed BaseEXP property instead of 0.
- Added: Gen6/7/SWSH trainer editor can now change the save file's trainer gender, by updating model data. Thanks @abcboy101 !
- Added: Gen5 DLC editor added. In addition to the C-Gear skin editor, can load/export Musicals, Pokedex skins, Battle Videos, etc!
- Added: Gen5 DLC supports reading/writing the never-distributed Battle Test data.
- Added: Gen5 misc editor can now change more Battle Subway properties. Thanks @Mowstyl !
- Added: Gen3 misc editor can now change Lilycove Museum paintings (RNG abuse). Thanks @pasqualenardiello !
- Added: Gen2 misc editor for Crystal added button to enable the GS Ball event.
- Added: Gen2 mail formats now read/write for all languages. Thanks @abcboy101 !
- Fixed: Complete Dex cheat (BDSP, SV, etc) now retains already set shiny flag records for entries. Thanks @TankedThomas !
- Fixed: Partner Ribbon now shows up in the Affixed Ribbon list.
- Fixed: Met tab now loads Version/Location correctly when starting up with a RBY save and loading a future game save.
- Fixed: Gen8 BDSP Manaphy egg now generates correctly.
- Fixed: Gen4 HGSS box modification corruption on single in-game save issue fixed. Thanks @Lusamine, @gingrentse, @WonderSquid !
- Fixed: Gen3 GameCube OT names that are 7 characters long now convert to PK3 correctly.
- Changed: Gen5 C-Gear Skins loaded from image files no longer completely fail when too many tiles, instead showing partial results.
- Changed: Errors generated by plugins are now more clearly indicated that they are caused by the plugin, for error reporting.
24/07/27 - New Update: (353225) [9310677]
- Legality:
- - Added: Most Gen3 events from Japan are now recognized.
- Fixed: Gen6 box name editing now edits the right offset. Thanks @javierhimura !
- Fixed: Other small regressions/oddities reported have been resolved.
- Fixed: Save files with uncommon appended footer types no longer cause issue when saving/closing subforms.
24/07/03 - New Update: (82341) [8957452]
- Legality:
- - Added: Slot source legality checks for miscellaneous slots like Daycare. Shouldn't flag anyone ;)
- Added: Gen4 trainer stat record editor. Thanks @abcboy101 !
- Added: Gen3 memory cards can now be auto-detected as the latest save file on startup/request.
- Added: Gen3 Berry Powder, Pokéblock, and Decoration editors. Thanks @abcboy101 !
- Fixed: Gen9 eggs now no longer auto-clear trash bytes for nicknames (and no longer flag in doing so).
- Fixed: Gen5 misc editor now opens correctly for editing the Key system.
- Fixed: Gen4 pk4->ranch conversion no longer throws an error.
- Fixed: Gen4 battle revolution nickname/OT now reads correctly.
- Fixed: Gen1-3 saves with misc footers are retained as intended.
- Changed: Some internals changed to better work with web browsers (wasm). Thanks @arleypadua !
- Changed: Resource fetching abstraction extracted for better reuse with plugins.
24/06/03 - New Update: (96798) [8875111]
- Legality: Added automatic (basic) Trash Byte checks for Switch-era (Gen7b+) files. Further refinement & expansion in the future.
- - Fixed: Mystery gifts distributed with nicknames no longer flag IsNicknamed as invalid.
- Added: Entity editor move dropdown now displays the move's type on the left side.
- Added: Entire boxes can be dragged & dropped. Must enable via setting as it is not intuitive. Drag from the Box tab rectangle.
- Added: Report grid can now specify extra properties to show, as well as properties to hide. Change via settings.
- Added: Gen1-3 save file language/version detection updated for more edge cases.
- Added: Gen2-5 localization text files added for less popular languages. Thanks @abcboy101 !
- Added: Gen3 GBA<->GC string conversion logic to handle special text entry. Thanks @abcboy101 !
- Added: Gen4 Seal/Accessory/Backdrop editors. Thanks @abcboy101 !
- Added: Gen5 Geonet/Unity Tower can now edit country/region data. Thanks @abcboy101 !
- Fixed: Gen6/7 entities now save the volatile status effect rather than wiping it (see previous release notes).
- Fixed: Gen3-7 Nidoran/Farfetch'd text char quirks updated to better align with GameFreak's mess.
- Fixed: Gen1/2 quirks with box data have been rewritten and resolved.
- Changed: Gen1-3 emulator save formats that store RTC data are now detected more reliably.
- Changed: More performance improvements as always! Additionally, translations can now handle Enum localization.
24/05/05 - New Update: (101440) [8778313]
- Legality: Added Regulation G.
- Added: Entity editor can now modify battle-Status effects (Burn, Paralyze, etc). Click the bottom right corner of the window for the GUI.
- Added: Gen5 trainer records can now be edited via Misc editor. Not documented well, but exposes the values for editing.
- Added: Gen1-3 games now detect language/version based on the save file name. If not detected, can be overridden via settings before loading.
- Added: Gen1 can now show an Entity's gender if enabled via settings, using Gen2 IV gender determination logic.
- Fixed: Gen7 Chinese species names now write correctly.
- Fixed: Gen6 OR/AS DexNav count read/write fixed.
- Fixed: Gen3 trash bytes now reference the Entity for translating the string, rather than the save file.
- Fixed: Gen2 Box Names now read/write ligatures correctly.
- Fixed: Gen1/2 box data now retains empty slot data instead of reformatting into empty box lists (glitching friendly).
- Changed: Legality settings have been extracted to a more easily customized settings object.
- Changed: Translations updated for Chinese & Japanese. Thanks @ppllouf & @902PM !
24/03/26 - New Update: (139375) [8676873]
- Legality:
- - Fixed: Handled some edge cases with latest release RNG Frame checks for Gen4.
- - Added: Verification for Gen3 CHANNEL and MYSTRY seed patterns.
- Added: Gen4/5 API now supports reading/writing battle videos to the savefile object.
- Fixed: Gen5 Entree Forest in Misc now saves correctly. If broken, open the editor on the previous release and save again.
- Fixed: Event Flag diff now works as intended. Pokedex button restored for some save formats (regression from last release).
- Changed: Plugin error messages will now more clearly indicate they are an issue with plugins rather than PKHeX's fault.
- Fixed: Gen4 Daycare seed set now works as intended, no longer corrupts Daycare slot 2.
- Fixed: Gen4 Mystery Gift now reads correctly.
24/03/10 - New Update: (61116) [8537498]
- Legality: Added Encounter Slot RNG correlation checks for Gen4 (and Gen3). Because Encounter Type PID mismatch wasn't enough!
- - When hovering over a slot, the program will indicate a possible method to encounter the slot with a lead & initial seed (not Method 1).
- - Added: Gen8+ RNG seeds that are 64bit correlation (like SW/SH raids) will now indicate the detected RNG seed.
- - Added: Gen1/2 Event Gifts are now recognized completely. Thanks @ShadowMario3!
- Changed: Save Block handling reworked to better match the real game behavior of managing chunks of memory. Thanks @foohyfooh!
- Added: Out-of-bounds text entry characters are now indicated with a [?] next to the Nickname/OT text entry. Thanks @abcboy101!
- Added: Batch Editor commands are kept when the window is closed, while the program remains open.
- Added: Loading empty save files (all 00 or FF) will now give a more detailed error message indicating failure.
- Added: More games indicate Daycare status completely. Maybe editing in the future?
- Added: Gen1/2 NSO save files are now able to be loaded, edited, and exported without needing an external tool.
- Added: Gen2 player color palette now editable via Block Data editor. Thanks @Bl4ckSh4rk!
- Added: Gen4/5 Battle Videos can now be extracted & interacted with via PKHeX.Core API code.
- Fixed: Gen3 FR/LG National Dex unlock fixed. Thanks @Bl4ckSh4rk!
- Fixed: Gen9 Alcremie formarg handling for Pokédex fixed. Thanks @sora10pls!
24/01/12 - New Update: (390462) [8476382]
- Legality: Added Mochi Mayhem Pecharunt, Regulation F, and Blaziken Tera Raid recognition.
- - Fixed: Level 100 encounters that were evolved in S/V with level-up methods (Eevee, Magikarp) now recognize correctly.
- - Fixed: Gen1/2 transfers to Gen7+ will now recognize filtered OT names as valid. Thanks @abcboy101!
- - Fixed: Recognition of Gen8 Hidden Ability patched raids now works as intended.
- - Fixed: Recognition of Gen8+ GO encounters that evolve via form arguments now are recognized as intended.
- Added: MarkingCircle/Triangle/Square/etc now reimplemented, able to be used in Batch Editor commands.
- Added: Gen1/2 transfers to Gen7 can now override the default transfer version via program settings.
- Fixed: Gen9 Stellar type can now be set via Batch Editor with its corresponding type value (99).
- Fixed: Hover preview custom tooltip shows Hidden Power type correctly (was off by 1).
- Changed: Box Dump now uses a GUI to allow changing settings with more flexibility.
23/12/22 - New Update: (156280) [8085920]
- Legality: Updates for Scarlet & Violet 3.0.0 behaviors revised to fix inaccuracies.
- - Fixed: Recognition of marks, stellar fixed encounters, and underdepths encounters.
- - Gold Bottle Cap on flawless IVs in S/V is now flagged; upload to HOME & back to get the official fix.
- Fixed: Gen9 S/V 7-Star Raid records now can be edited with the revised raid block editor. Thanks @foohyfooh!
- Fixed: Other misc regressions too insignificant to note (but observed & reported by many -- thanks!)
23/12/18 - New Update: (55399) [7929640]
- Changed: PKHeX now uses .NET 8 for its runtime (updated from .NET 7)!
- - Requires Windows 64bit operating system, with the .NET Desktop Runtime 8.0.x
- - https://dotnet.microsoft.com/en-us/download/dotnet/8.0
- Added support for Scarlet & Violet 3.0.0 (Indigo Disk)
- Legality: Added encounters / changes as per Indigo Disk DLC adjustments.
- - Will still have issues with crossovers, Minior, and encounter locations. Will be addressed next release.
- - Fixed: Gen4 Manaphy PID rerolling behavior updated. Thanks @Lincoln-LM!
- Added: Hover preview now shows a custom preview tooltip. Old behavior can be reverted to via settings.
- Added: Gen6-9 map position/rotation editing. Thanks @abcboy101!
- Added: Gen6 XY Roamer editor. Thanks @foohyfooh!
- Added: Gen5 Musical Prop editor. Thanks @foohyfooh!
- Added: Gen4/5 Chatter editor. Thanks @abcboy101!
- Added: Gen4 KOR<->INT/JPN converter for save files. Thanks @abcboy101!
- Added: Gen2 Mystery Gift item / unlock flag editing. Thanks @RainingChain!
- Fixed: String conversion has been rewritten for easier maintenance. Future updates will handle Farfetch'd and other cases better.
- Fixed: Gen6/7 country/region names for the latest 3DS region manifest. Thanks @abcboy101!
- Fixed: Gen4 Pokétch Unlock cheat updates the total count of apps now. Thanks @foohyfooh!
- Fixed: Gen4 Complete Dex cheat updates female-only bitflags correctly now. Thanks @DeadSkullzJr!
- Fixed: Gen3 Colosseum Fateful Encounter flags now read/write correctly based on Japanese/International save file context.
- Fixed: Gen3 Mainline saves update party Mail indexes when lacking a mail held item (prevents invalid mail icon).
- Fixed: Gen1 RBY saves that have not yet received a starter now differentiate correctly. Thanks @fattard!
23/10/11 - New Update: (294546) [7874241]
- Added support for Scarlet & Violet 2.0.2 save file sizes.
- Legality:
- - Badwords list has been updated to be more strict per latest Nintendo Switch 16.0.0 firmware. Thanks @Bl4ckSh4rk!
- - Gen9 Distribution Outbreaks now recognized. Thanks @Lusamine & @sora10pls!
- - Gen9 Crossover met location logic tweaked for better location identification in Kitakami.
- - Gen4 Pokéwalker IV spreads are now validated. Thanks @Lincoln-LM & @HappyLappy1!
- Added: Gen8 SW/SH adventure start date can now be changed in the Trainer Editor. Thanks @foohyfooh!
- Added: Gen4 Pokeathlon Points can now be edited via the Block Editor.
- Fixed: Initial program startup now notifies all plugins when a save is loaded on startup.
23/09/25 - New Update: (100007) [7579695]
- Added support for more Scarlet & Violet 2.0.1 save file sizes.
- Legality: Added more Kitakami encounters (sub-zones) and basic weather mark recognition.
- Fixed: Encounter template recognition regressions resolved (Gen4 Pokewalker, Gen9 static encounter scale).
- Fixed: Gen9 S/V Pokédex for 2.0.1+ save files now references a new save file block & GUI editor.
- Added: Gen9 TM/Fly cheats now check for if a flag exists for pre-2.0.1 save files.
- Added: Gen9 Fashion unlock cheat now adds 2.0.1+ fashion if available.
23/09/16 - New Update: (112092) [7479688]
- Added support for Scarlet & Violet 2.0.1 (Teal Mask)
- Legality: Added encounters / changes as per Teal Mask DLC adjustments.
- - May still have issues with crossovers / hidden ability permissions.
- - Changed: Evolve-Knowing-Move criteria has been rewritten for better side-game checks & accuracy.
- - Changed: More encounter generator fixes implemented (missed a few properties).
- Fixed: Gen9 Pokédex clearing individual entries now only wipes the entry instead of everything that follows. Thanks @Alexander3a !
- Fixed: Gen5 CGear Skin importing now gives the correct error message when too many unique tiles are imported.
23/08/23 - New Update: (160296) [7367596]
- Legality: Added realtime RNG correlation checks for most SW/SH raids. Thanks @SciresM & @Lusamine !
- - Note: Seed details do not trickle out to the verbose legality report at this time since seeds are 64bit (not 32bit).
- - Added: The encounter generator / matching API has been refactored for better performance and maintenance.
- - Fixed: More evotree edge cases have been resolved since the last update.
- - Fixed: Gen4 Move Tutor now permits correctly for alternate forms.
- - Fixed: Gen2 Union Cave B2F fishing slots are now recognized correctly.
- - Fixed: Gen1/2 SID check no longer indicates "Fishy" when SID is correctly zero.
- Added: Technical Record editor now indicates yellow for record indexes that can be legally learned by a previous evolution.
- Added: Gen9 origin Transfers back to PK9 format now regenerate with legal values that would be sourced from HOME.
- Fixed: Gen9 Hoopa-Unbound no longer sets a FormArgument value of 3 whenever set back to box slots.
- Fixed: Gen7 US/UM relearn moves now properly show in all PK7s when loaded to tabs.
- Fixed: Gen5 CGear Skin handling now behaves correctly for importing & saving skins.
- Fixed: Pokérus strains now indicate correctly again in the PKM Editor GUI.
23/07/09 - New Update: (225659) [7207300]
- Legality: Updated evolution checking algorithms to better identify game visitation. Thanks @Lusamine & @sora10pls !
- - Added: HOME 3.0.0 move sharing logic for learning moves via HOME instead of in-game.
- - Added: HOME 3.0.0 ball inheritance logic for breeding encounters for/from Scarlet/Violet.
- - Added: GO Master Ball legality checks now allows Master Ball when encounter date & type permits.
- - Added: GO encounters outside the availability window now display a detailed illegal message.
- Added: Gen4/5 Geonet/Unity Tower editor. Thanks @abcboy101 !
- Changed: Gen9 Tera Type icons now use higher quality sprites from HOME. Thanks @sora10pls !
- Changed: Gen8a Move Shop editor GUI has been redesigned for a more visual experience.
- Changed: Gen7b+ Height/Weight now show as gray whenever Scale takes precedence in sizing determinations.
- Fixed: Batch Editor filters now work correctly for Box/Slot when using operators other than ! or =
- Fixed: Gen7b Randomize IV/AV buttons now center correctly within the form.
- Fixed: Gen7 Report grid now shows Resort (Poké Pelago) slots correctly.
- Fixed: Gen6/7 Memory Editor now shows Country/Region visitation correctly.
- Fixed: Gen6 Hall of Fame editor now keeps leading zeroes on the TID/SID entry fields.
- Fixed: Gen5 unused second Roamer block editor editing now reads from the correct offsets. Thanks SaltedNeos !
- Fixed: Gen4 Ranch checksums are now applied correctly again. Thanks @Zazsona !
- Fixed: Gen3 adding Ferry Tickets no longer causes the program to error when your Key Items bag is full.
- Fixed: Gen2 International Crystal saves now set the backup checksum to the correct offset. Thanks @Zazsona !
23/06/03 - New Update: (178908) [6981641]
- Added: HOME 3.0.0 initial support. Legality analysis is still under research. Thanks @Lusamine & @sora10pls !
- - Lacks full support for cross-game transfers involving evolutions and moves. Please be patient, there's a lot of things to handle!
- Added: Tech Record editor GUI has been redesigned for a more visual experience. Can now sort alphabetically, owned, or move type.
- Added: Gen9 S/V clothing "cheats" have been added to the Trainer Editor window. Thanks @pasqualenardiello!
- Fixed: Small regressions in item list permissions.
- Changed: Gen7 Totem Form sprites now display with an Orange-colored glow, similar to Gen3 C/XD shadow purple.
- Changed: DPI scaling adjusted for better appearance on high resolution monitors.
23/05/11 - New Update: (80094) [6802733]
- Legality:
- - Changed: Creating a new PKM from template will set current moves same as the games.
- - Changed: Pokérus strains 0 & 8 now permitted due to official implementation errors in Gen2 & Gen3.
- - Fixed: Encounters crossing over into Mesagoza (location 8) are no longer permitted (vertical distance).
- - Fixed: TSV=0 HOME accounts are now permitted to exist, and antishiny XOR for the fixed PID gifts now behaves correctly.
- Added: Batch Editor filter commands can now reference other property values (aka "property copy") like modify commands.
- - To copy a property, specify like so: `.Stat_ATK=*Stat_DEF`
- - To filter based on the value of another property, same way.
- Added: Moves that have changed elemental type over generations will now indicate their type per the save file context.
- Added: Gen9 Player Image visualizer now shows the profile photos in the Trainer Editor. Thanks @pasqualenardiello !
- Added: Gen7 LGPE can now unlock all fashion via the Trainer Editor.
- Added: Gen5 Block editor now shows both roamer objects (Thundurus and Tornadus).
- Fixed: Gen9 scale indicators now reflect the >=1.1.0 patch scale thresholds. Thanks iD3M0N1C!
- Fixed: Gen5 C-Gear Skin no longer retains a file lock on imported skin image files.
- Fixed: Gen3 Memory Cards can now be detected as the latest save file, as well as a backup-file source for the pkmdb.
- Fixed: Gen3 XD un-purified shadow Pokémon no longer flag w/o Ribbon if they have a Shadow Gauge of 0 (ready to purify).
- Changed: Sub-form scaling mode changed to "Inherit" -- added a Display setting to revert back to Form scaling (from Dpi).
23/04/06 - New Update: (166321) [6722639]
- Legality:
- - Changed: Vivillon 3DS Region handling reworked to handle all regions. Thanks @abcboy101!
- - Fixed: BDSP footprint ribbon now checks correctly.
- - Fixed: Gen4 Pokéwalker course captures are now allowed for all versions.
- Added: PKM Editor now shows the elemental type for Moves.
- Added: PKM Editor now shows affixed ribbon (or if one can be affixed) on the cosmetic tab.
- Added: Click the affixed ribbon indicator to open the ribbon editor (same as button).
- Added: Click a ribbon sprite in the ribbon editor to quickly affix it.
- Added: SV enrollment date can now be changed via Block Editor. Thanks @foohyfooh!
- Added: More Gen3 Mystery Gift API functionality added. Thanks @Bl4ckSh4rk!
- Fixed: Importing Mystery Gifts to the SaveFile's Mystery Gift list GUI's 11th slot now works as intended.
- Fixed: Gen4 Manaphy Egg now generates correctly from the Encounter Database.
- Fixed: Gen4/5 Country/Region no longer throws an error for certain countries.
- Fixed: Gen1/2 stats now calc correctly (perfect square-root EVs)
- Changed: Updated handling to correctly generate and verify size of WC9 entities.
- Changed: More performance improvements reducing allocations.
23/02/27 - New Update: (186209) [6556318]
- Added: Support for S/V 1.2.0
- Added: SV style menu sprites for all species/forms. Thanks @sora10pls & @SciresM!
- Added: Gen5 Black/White City data can now be imported/exported, and Roamer status can be reset. Thanks @frefire!
- Added: Gen4/5 Geonet Location save file settings can now be viewed/changed. Thanks @abcboy101!
- Added: Gen4 Ranch now supports Toys from the Platinum game update. Thanks @Zazsona!
- Fixed: PKMEditor sidebar tab scaling now works on operating systems with scaling > 1. Thanks @Manu098vm!
- Fixed: Batch Editor string screening (ex. requesting ".Species=Pikachu" instead of 25) now works again.
- Fixed: Nature stat amplification clicks on the Stats tab now alters the amps correctly.
- Fixed: Update Available link now works as intended on .NET 7
- Fixed: Gen6 X/Y Pokéflute is no longer removed from Key Items as it can temporarily exist.
- Fixed: Gen5 C-Gear Skins now read/write correctly (again).
- Fixed: Gen3 Colosseum save files now generate valid savedata hashes on export.
- Fixed: Gen2 OT Names now edit save correctly when edited. Thanks @Zazsona!
- Changed: Shiny Sprite icon now shows as a larger icon, with Xor0 being subtly different. Thanks @Lusamine!
- Changed: GUI Translations updated. Thanks @ppllouf, @wubinwww, @mi-ya1987, @Manu098vm!
- Accessibility:
A few changes have been made to assist screen readers, notably:
PictureBox slots representing data (Pokémon, Mystery Gifts, etc) now draw a focus border, and can be tabbed between.
The focus border can be disabled via settings by setting the indentation to -1.
Added accessibility narration strings for specific controls.
23/01/30 - New Update: (153698) [6370109]
- Fixed: Mystery Gift files now recognize via extension correctly.
- Fixed: Gen9 Pokédex bitflag get/set fixed (remapped species ID).
- Changed: GUI translations updated. Thanks @ppllouf, @riruo, @mi-ya1987 !
23/01/26 - New Update: (33425) [6216411]
- Changed: PKHeX now uses .NET 7 for its runtime (updated from .NET Framework 4.6)!
- - Requires Windows 64bit operating system, with the .NET Desktop Runtime 7.0.x
- - https://dotnet.microsoft.com/en-us/download/dotnet/7.0
- - For those wanting to run the program from a Mac/Linux machine, use a Windows VM. No more mono/wine support.
- - This change results in a faster program, and being able to write more modern & extensible C# code.
- Changed: The Main Window layout has been adjusted for better GUI scaling support:
- - PKM Editor now uses vertical tabs, and some controls have moved to more appropriate tabs.
- - PKM Editor now has a "Cosmetic" tab, which contains low significance values like Contest Stats.
- - PKM Editor now has a simple selector for Handling Trainer selection rather than the background highlights.
- Legality:
- - Fixed: A few recognition bugs have been fixed. Thanks @Lorenzooone!
- Batch Editor:
- - Added: Batch Editor can now filter with >/≥ and </≤ operators, improved from just != and =.
- - Added: Ribbon and Mark count properties added. Can now sort boxes by these counts!
- - Changed: TID/SID properties renamed; when using 16-bit trainer IDs, use TID16/SID16.
- Changed: Gen9 S/V no longer show the Square Shiny icon, as Xor0 no longer indicates differently in-game.
- Changed: Gen9 S/V raid parameter editor "Set All 6 Star" changed to "Copy current values to Other Raids".
- Changed: With the update to .NET 7, some features have been rewritten for better performance, or for better usage.
- Changed: GUI translations updated. Thanks @Manu098vm, @Kitcham, @easyworld, @jimmyorz, @Bl4ckSh4rk, @ppllouf, @butaneeeee!

View File

@ -221,8 +221,8 @@ private static NumericUpDown GetNUD(byte min, byte max, bool hex) => new()
Minimum = min,
Hexadecimal = hex,
Width = 40,
Padding = new Padding(0),
Margin = new Padding(0),
Padding = Padding.Empty,
Margin = Padding.Empty,
};
private static ReadOnlySpan<ushort> GetChars(EntityContext context) => context switch

View File

@ -42,9 +42,50 @@ public ulong GetHash(string nameOrHex)
/// <summary>
/// Base class with shared UI helpers and wiring for EventWork grids.
/// </summary>
public abstract record EventWorkGridBase(SplitContainer Container, DataGridView Grid, TextBox Search)
: IEventWorkGrid
public abstract record EventWorkGridBase : IEventWorkGrid
{
private readonly Timer _searchDebounce = new() { Interval = 150 };
private Action<string>? _searchAction;
private SplitContainer Container { get; }
private TextBox Search { get; }
protected DataGridView Grid { get; }
protected EventWorkGridBase(SplitContainer container, DataGridView grid, TextBox search)
{
Container = container;
Grid = grid;
Search = search;
_searchDebounce.Tick += SearchDebounceTick;
Search.Disposed += (_, _) => _searchDebounce.Dispose();
}
protected void WireSearch(Action<string> applyFilter)
{
_searchAction = applyFilter;
Search.TextChanged += (_, _) => RestartSearchDebounce();
}
private void RestartSearchDebounce()
{
if (Search.IsDisposed || Search.Disposing)
return;
_searchDebounce.Stop();
_searchDebounce.Start();
}
private void SearchDebounceTick(object? sender, EventArgs e)
{
_searchDebounce.Stop();
if (_searchAction is null)
return;
if (Search.IsDisposed || Search.Disposing || Grid.IsDisposed || Grid.Disposing || Container.IsDisposed || Container.Disposing)
return;
_searchAction(Search.Text);
}
protected static (SplitContainer Container, TextBox Search) CreateContainerCommon()
{
var container = new SplitContainer
@ -53,13 +94,13 @@ protected static (SplitContainer Container, TextBox Search) CreateContainerCommo
Orientation = Orientation.Horizontal,
FixedPanel = FixedPanel.Panel1,
IsSplitterFixed = true,
Margin = new Padding(0),
Margin = Padding.Empty,
};
var search = new TextBox
{
Dock = DockStyle.Fill,
Margin = new Padding(0),
Margin = Padding.Empty,
PlaceholderText = "Search...",
};
container.Panel1.Controls.Add(search);
@ -140,8 +181,7 @@ private EventWorkGrid64(EventWorkStorage64<T> storage, EventWorkLookup names, Sp
if (typeof(T) == typeof(ulong))
Grid.CellValidated += ValidateU64;
Search.TextChanged += (_, _) => ApplyFilter(Search.Text);
WireSearch(ApplyFilter);
ToggleAutoSize(true);
}
@ -186,7 +226,7 @@ public static EventWorkGrid64<bool> CreateFlags(TabPage host, EventWorkFlagStora
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None,
Dock = DockStyle.Fill,
RowHeadersVisible = false,
Margin = new Padding(0),
Margin = Padding.Empty,
DefaultCellStyle = new DataGridViewCellStyle { Font = font },
};
dgv.Columns.AddRange(MakeIndexColumn(font), MakeValueBoolColumn(font, "Value"), MakeKeyColumn(font));
@ -211,7 +251,7 @@ public static EventWorkGrid64<ulong> CreateValues(TabPage host, EventWorkValueSt
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None,
Dock = DockStyle.Fill,
RowHeadersVisible = false,
Margin = new Padding(0),
Margin = Padding.Empty,
DefaultCellStyle = new DataGridViewCellStyle { Font = font },
};
dgv.Columns.AddRange(MakeIndexColumn(font), MakeValueNumberColumn(font, "Value"), MakeKeyColumn(font));
@ -317,7 +357,7 @@ private EventWorkGridTuple(EventWorkValueStorageKey128 storage, EventWorkLookup
Names = names;
Grid.CellValueChanged += ValidateCell;
Search.TextChanged += (_, _) => ApplyFilter(Search.Text);
WireSearch(ApplyFilter);
ToggleAutoSize(true);
}
@ -338,7 +378,7 @@ public static EventWorkGridTuple CreateValues(TabPage host, EventWorkValueStorag
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None,
Dock = DockStyle.Fill,
RowHeadersVisible = false,
Margin = new Padding(0),
Margin = Padding.Empty,
DefaultCellStyle = new DataGridViewCellStyle { Font = font },
};
var c1 = MakeIndexColumn(font);
@ -470,7 +510,7 @@ private EventWorkGrid128(EventWorkValueStorageKey128 storage, EventWorkLookup na
Names = names;
Grid.CellValidated += ValidateValue;
Search.TextChanged += (_, _) => ApplyFilter(Search.Text);
WireSearch(ApplyFilter);
ToggleAutoSize(true);
}
@ -491,7 +531,7 @@ public static EventWorkGrid128 CreateValues(TabPage host, EventWorkValueStorageK
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None,
Dock = DockStyle.Fill,
RowHeadersVisible = false,
Margin = new Padding(0),
Margin = Padding.Empty,
DefaultCellStyle = new DataGridViewCellStyle { Font = font },
};
@ -619,7 +659,7 @@ private EventWorkGrid192(EventWorkValueStorageKey192 storage, EventWorkLookup na
Names = names;
Grid.CellValidated += ValidateValue;
Search.TextChanged += (_, _) => ApplyFilter(Search.Text);
WireSearch(ApplyFilter);
ToggleAutoSize(true);
}
@ -640,7 +680,7 @@ public static EventWorkGrid192 CreateValues(TabPage host, EventWorkValueStorageK
AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None,
Dock = DockStyle.Fill,
RowHeadersVisible = false,
Margin = new Padding(0),
Margin = Padding.Empty,
DefaultCellStyle = new DataGridViewCellStyle { Font = font },
};