Missed a 'return', the logic afterwards handles loading a PKM (which we
know the file is NOT).
Thanks @Favna
Previous two commits & this one resolve#127
Use one enum to denote Version across all code, also identifies if data
is invalid
Move some SAV code to virtual members in abstract class
(BAK/Exportable/Footer)
Few minor bugfixes here and there (hiding Characteristic label, loading
pk6 to sav3, sav3 version detection via gamecode)
Check for block identifiers if the general block checksum is invalid
(manually tampered).
BW/B2W2 detection is fine as is; the checksum block /won't/ be manually
modified.
Fixed save invalidation as well. GameVersions were detected based on
checksum validity.
Gonna change that so an invalid save can still be recognized (based off
of other markers)
Item/move/species (didn't add Ball and Version) being imported from a
.pkm or forcefully input now requires the user to OK before it is set to
the save.
EX: Hyperspace Fury isn't in X/Y, drag from another instance of the
program with OR/AS loaded and a Hyperspace Fury move... the user will be
alerted of the incompatibility and will be allowed to continue (and fix,
if desired).
Species selection should be limited to species available in game; upon
adding S&M these comboboxes are ready!
The CB_HeldItem in SAV_SecretBase doesn't need filtering as it is
limited when the SAV is loaded to the main form.
SAV5 change didn't get saved
no need to "take" the rest of the data when footer checking.
this logic can be expanded if other emulators behave differently...
Even catches the 1MB misconfigured DSV's (stuffs the bak data in with
the footer).
Works by searching for the DeSmuME footer signature in the input data,
if present, breaking up the info.
Second generation starters are legal with third generation introduced balls because you can catch their second stage on Pokemon Colosseum, but since back then Hidden Abilities didn't exist they're restricted to normal balls only.
Other balls are checked already but this ones weren't flagged as illegal.