Commit graph

137 commits

Author SHA1 Message Date
Kurt
13a6d16cb9 Relocate checksum/dexform logic 2019-03-16 12:01:21 -07:00
Kurt
8d49400b07 Change SecondsTo* from int to uint
having a year > 2050 can result in a 32bit seconds value (top bit set);
instead of being negative, keep it as a 32bit number.
2019-03-05 15:55:26 -08:00
Kurt
fb8aa3bba0 Lowercase parameter 2019-02-19 20:26:20 -08:00
Kurt
a385a8481d Misc tweak to savefile export
Use flags to request header/footer in the output
gets rid of the DSV/GCI bool arguments
2019-02-18 21:59:57 -08:00
Kurt
54ba9a0312 Update file->open for pb7 filtering
add pb7 to pkm extension list, ignore it in gen7 (sm/usum), update gg
filtering (allow pb7, not bk7)
add comments indicating format source game
2019-02-09 20:33:37 -08:00
Kurt
383d4b7700 "" -> string.Empty
be explicit that the string is empty rather than possibly missing
disallow encrypted export for BK4 (they're not encrypted), removes type
check
simplify replaceall in showdownset (don't call ReplaceAll 4x, just get
valid chars and rebuild)
simplify get ribbon sprite name (precompute ToLower and appended values
2019-02-07 21:40:20 -08:00
Kurt
59b41937e1 Misc variable name changes
readability++
2019-02-06 23:28:02 -08:00
Kurt
6ed9f979de Continued refactoring
removing null results as indicators of no data (c# 8 sooooon)
2019-02-01 23:26:43 -08:00
Kurt
aa022fad40 Misc refactoring
remove some null usages, return an empty array instead
reduce as arg
2019-02-01 23:08:03 -08:00
Kurt
0b5429ebbc Relocate wormhole edit logic to separate class
#2250
make arrays static (only spin up one copy ever)
2019-01-25 19:58:00 -08:00
PMArkive
3f0a5b3ffa Add USUM Wormhole functions (#2250)
The current wormhole's shiny flag & pokemon can be changed with these functions.

The flags & offsets were found by @PP-theSLAYER https://projectpokemon.org/home/forums/topic/39433-gen-7-save-research-thread/?page=3&tab=comments#comment-239090
2019-01-25 19:52:46 -08:00
Kurt
d7a501c168 Relocate some logic to interfaces 2018-12-18 17:15:35 -08:00
Kurt
efb9b7eba2 Misc cleanup
removes clickonce logic/reference
2018-12-10 20:32:08 -08:00
Kurt
71fab815bf Provide more slot information
remove lockedslots, store & save all teamslots for sav7
differentiate locked slots from overwrite protected slots by emitting an
enum containing info about the slot

locked = can't be replaced, period.
starter/battleteam = can't be pasted over by bulk-pastes

can eventually show more specific sprite layers to denote party
indexes/team#/starter
2018-12-04 22:59:28 -08:00
Kurt
4c1232855f Add getstring method with non-sav data 2018-12-04 22:00:57 -08:00
Kurt
15b6ef0597 Increment wild encounter count on add capture 2018-11-27 08:53:56 -08:00
Kurt
a3421a881d bounds check record set
closes #2129
2018-09-27 21:30:20 -07:00
Kurt
4a81f326eb Update trade/egg/capture record set
#2128
it's still an imprecise thing, as ingame gifts aren't counted by either
release count isn't tracked, so the number should be roughly >= total
box+party count.
2018-09-26 19:06:05 -07:00
Kurt
55de21afc4 Add records when setting to slot
Closes #2128
2018-09-26 19:00:52 -07:00
Kurt
e0e628844f Update copyto protection
skip over write protected slots (locked/team), may eventually weaken the
GUI to allow modding boxdata with locked slots (which will be skipped).
2018-09-24 19:43:59 -07:00
Kurt
164a26e757 Misc reorg + skeleton for slot editor
SlotChangeManager is pretty glue-y, might eventually shift to this
implementation
2018-09-21 21:20:28 -07:00
Kurt
b280ffcfef style updates
should be pretty much it
2018-09-14 22:37:47 -07:00
Kurt
316341e140 Misc updates
Remove unused sav properties
Add translatable strings for autodetect SAV error suggestion

add speculated gg dex formtable
- no eevee forms
- increments 1 for pikachu since it already exists in table
- stops at mewtwo (no other formed-species available)

im currently setting up skeleton stuff for lgpe since we're <70 days
from release; by doing some pre-work like prior games I can get a good
idea of what needs to be adjusted prior to crunchtime!
2018-09-06 20:35:55 -07:00
Kurt
84185dc6c9 misc improvements
add records class for managing info for trainer records
add more b2w2 block docs
2018-08-05 12:39:06 -07:00
Kurt
f4bfdb8311 Remove unnecessary empty array allocations
yay net 4.6
read more: http://justinvp.com/2015/07/20/array-empty/
2018-08-01 18:30:51 -07:00
Kurt
02a6d26e1b Break apart BAKName into smaller components
simplifies definition & makes it easier to update bakname usage later
2018-07-29 21:51:45 -07:00
Kurt
b16015e8e5 Split InventoryPouch to inheriting classes 2018-07-29 13:55:07 -07:00
Kurt
f27f11bfc8 Clean up pk7/sav6/sav7 simple methods
extract GetFormDuration to method, remove unused GetIsCompatible
specialized variant (there's a generalized version in SAVUtil.cs,
IsPKMCompatible -- might do another round of WinForms->Core absorption
2018-07-20 20:25:28 -07:00
Kurt
990eb73f8a Misc simplifications
recordmax is simplified
2018-07-07 15:38:11 -07:00
Kurt
e915cd170b Extract trainer stat to interface / usercontrol 2018-07-07 11:48:03 -07:00
Kurt
99005d8fc0 Refactoring
more discards & simplifications
2018-05-12 12:28:48 -07:00
Kurt
e2f11edc43 Refactoring
discards, Array.Find over FirstOrDefault
2018-05-12 08:41:29 -07:00
Kurt
5a3c8f4147 Remove trailing whitespace 2018-05-12 08:41:29 -07:00
Kurt
71faaee31c Refactor savefile tid/sid to int
can now use TrainerID editor control on a savefile... soon?
2018-04-28 11:06:58 -07:00
Kurt
99a4c55579 Relocate some logic to core
party stats set when setting a slot to a save file
simplify set/delete slotchange duplicate logic
suggest better met locations beyond VC transfers
hatching a gen6 egg applies memories automatically
2018-03-25 19:05:49 -07:00
Kurt
9bb4120ff9 add faster pkm slot presence check
instead of checking if the array is empty, only check PID and species
2018-03-18 16:22:21 -07:00
Kurt
102550174e Simplification
invalid/unknown usages were incorrectly interchangable; dex-sets were
looking at Unknown which was impossible for some cases.

only use GameVersion.Unknown as a temp placeholder for later resolution
by the user.
2018-03-11 18:07:48 -07:00
Kurt
d20f14504e Refactoring
pull out BlockInfo logic, standardize common block checking
reduces array allocations
2018-02-19 11:33:37 -08:00
Kurt
834d115e3a Add extra slot fetch utility
fix resort offset fetch (+=4)
2018-01-29 20:15:51 -08:00
Kurt
2063cef3e4 Fix arrays not being cloned
don't use the existing data array silly -- i was paranoid long ago for a
reason
all other SAV clone methods don't return the Data array, only these
#1764 additional behavior noted
2018-01-18 14:05:34 -08:00
Kurt
a1f2f8708a Refactoring
pass identifier on cloning pkm
remove unnecessary ref for passing Data (not modifying array reference)
const some magic numbers
2017-12-27 16:36:24 -08:00
Kurt
3445b46526 Remove unnecessary array cloning
new objects would always clone the input array; only clone on object
cloning (keep the original array reference on initial creation from
bytes)
2017-12-26 21:38:19 -08:00
Kurt
816ebf6b0e Refactoring
no functional change
2017-12-11 16:01:24 -08:00
Kurt
bdc9d7edce fix plaza get set
closes #1684
2017-12-02 21:37:46 -08:00
Kurt
fdc52e2c19 Add pkm league starter EC for gen7
Closes #1671
2017-11-29 20:04:01 -08:00
Kurt
6534ef1919 Refactoring
Reworks festa facility into a get/set object, simplify some operations
naming convention (PascalCase) for methods/properties
closes #1635
2017-11-19 21:25:46 -08:00
Kurt
70ec1fda5e cleanup
wasn't able to view the designer layout so I removed & readded to
project -- works fine now.
uppercase method names
2017-11-19 16:16:44 -08:00
pokecal
3c85b0ead3 add G7 FestivalPlaza Editor
There are too many phrases,
I have no plan to complete all list of phrases.
But I think user can edit phrases of each facility
 by using their phrase settings.
2017-11-20 06:50:39 +09:00
Kurt
469587bbbd Add Rotom OT name
"nah lets just store the OT in the save file twice"

add a double check if OT != RotOT to remind the user
2017-11-18 22:26:57 -08:00
Kurt
3e60bcd5dc fix minior dex set clamp
[0],[cores), ignore all other meteor forms
thanks @sora10pls
2017-11-14 21:55:52 -08:00
Kurt
dbf10d1c29 Add surf score editing
trainer7 Ultra tab
Closes #1605
2017-11-14 21:35:28 -08:00
Kurt
c4f8dabd26 rework dex getting
changes iteration to be per-species rather than per list.
uses the internal 'should i set a bitflag' code rather than a banlist.
2017-11-14 19:14:02 -08:00
Kurt
953f6939a5 Fix double save export memecrypto issue
Closes #1600 , memecrypto is applied on first export but not cleared
prior to second export, thus resulting in a checksum over garbage data
that is permanently lost when the new memecrypto sig is applied.

Solve this by keeping track of memecrypto application status.
2017-11-13 19:34:50 -08:00
Kurt
dbabcb9ef0 Misc updates
fix hall of fame fixed offset
fix ball throw type unlock/learned flags using fixed offset
fix current throw type defaulting to -1 when Nihilist (new USUM style)
by adding in for USUM

add fused slot offset fetching
convert event flag combined byte fetch to use Get/SetEventFlag with
event flag references.

add ZRingUnlocked sav properties & checkbox for toggling

set AlolaTime only if the combobox is enabled (only disabled if not yet
set by game)

Closes #1595
2017-11-12 21:28:34 -08:00
Kurt
fbab1cfbe6 Update usum eventflag max
now these event flags are making sense
2017-11-11 18:58:57 -08:00
Kurt
6127dd7a08 split record maxes
slightly different in USUM, any difference increased the cap:
070  999999->999999999
071  999999->999999999
072  999999->999999999
073  999999->999999999
074  999999->999999999
192  9999->65535
193  9999->65535
194  9999->65535
197  9999->65535

Worth noting that these were undocumented record IDs and likely unused
in Sun/Moon; don't really need to split these tables but good for
documentation purposes.

Trainer7 grabs maxes from the save without specifying version, so add an
overload to default to USUM (even though the unused records will have
bad caps, they're unused in SM so whatever).
2017-11-10 17:37:04 -08:00
Kurt
8ab39cae7b Update dex form handling 2017-11-10 17:08:47 -08:00
Kurt
6057780b4b Fix blank saves array accessing
old blanks modeled sm saves with fixed offsets; since the conversion to
dynamic block offsets, a few offsets need to be manually defined.
2017-11-09 19:26:31 -08:00
Kurt
da5dd5ccb3 remove usum early return for dex bit setting
I highly doubt this is causing save corruption; looked through the
disassembly and the offset ptrs are the same relative to sun/moon.
Implementation is flexible for both as gamefreak allocated enough space
in each bit array.

pokedex editor recognizes bools correctly (including for formes).
2017-11-08 19:34:07 -08:00
Kurt
800ba6cf90 encounter additions
add ingame trade data
add placeholder SOS data containers
add refs to all wild encounters (pelago is same as sm)
unmark some todo's
2017-11-08 15:07:04 -08:00
Michael Scire
78acb8e13b Fix save resigning for USUM, add resources for new pokemon 2017-11-08 11:31:09 -08:00
Kurt
ece66e1a02 Misc tweaks
allows loading of species > 720 lol
still nowhere near done (large task is resource acquisition)
2017-11-08 00:51:08 -08:00
Kurt
543736d568 Early rough USUM compatibility
need to dump string resources, sprites, and repoint the form list string
fetch later. tons more to do

no guarantee of any working functions
2017-11-08 00:34:32 -08:00
Kurt
d08bd25b4f always clear memecrypto sig on load
allows verification & resigning to work as intended
reverts to code prior to refactor

b1641772e6 (diff-1681616e650971296aa4b549afadd0eaL116)

cleanup suggestions for tests
2017-11-07 16:57:18 -08:00
Michael Scire
b1641772e6 Refactor Memecrypto API, Add Memecrypto Tests
Refactors the Memecrypto API to improve generalized usage.

Adds unit tests that verify memecrypto works, so that future changes
don't potentially break the code.
2017-11-06 03:24:48 -08:00
Kurt
2d6b6f7095 Simplify gen7 checksum operations
don't spit out a new byte array for each block, just check with same
array

unrelated: allow pk2's to be selected from file->open when a sav7 is
open
2017-11-04 15:04:21 -07:00
Kurt
d7300ce68f Cleanup
add amoongus route22 encounter
fix typos in comments
resharper suggestions for recent pr
2017-11-02 21:37:28 -07:00
Kurt
60e719a65a Misc refactoring
more usum prep
don't allocate empty array on every savefile creation (use linq All
comparison)
add percent seen/caught savefile properties for data analysis purposes
2017-10-31 09:24:54 -07:00
Kurt
69cf1eaa9c add more pkhex.core xml documentation
adds a bunch of documentation useful for those unfamiliar with the core
library
2017-10-23 23:12:58 -07:00
Kurt
f5e595772d Add more sav7 properties 2017-10-14 23:47:16 -07:00
Kurt
fa310e8c4e Add gen6 map mirror coordinate changing
not sure what they do but the values should match
Closes #1523
2017-10-14 16:32:34 -07:00
Kurt
02c06d154b Split item cap for usum prep 2017-10-10 19:30:55 -07:00
Kurt
78a557c3cd misc tweaks
simplify some linq usage
2017-10-08 22:14:47 -07:00
Kurt
059451d66e misc tweaks
dictionary species check, max deviation beginnings for USUM
simplification for gen1/2 pokemonlists
2017-10-05 22:37:45 -07:00
Kurt
ea751e26b1 Convert chinese string only if species name
Resolves charmap duplications in the chinese char tables:
多边兽Z (Porygon-Z)
属性:空 (Type Null)
谜拟Q (Mimikyu)
卡璞・鸣鸣 (Tapu-Koko)

Games cannot have a nickname/OT in chinese as of current date... I
assume this will be fixed down the road
2017-10-03 18:15:15 -07:00
Kurt
1e377c2963 interpolation++
no functional change (assumed)
2017-09-29 22:58:25 -07:00
Kurt
ed1b934374 Misc refactoring
expose some useful IEnumerable methods (sorting / bin->pkm / copy) to
simplify some common operations
change some explicit arrays to IList for flexibility
remove old memecrypto bool (no longer necessary as XP is not supported)
rename some methods for more clarity
2017-09-28 22:20:27 -07:00
Kurt
6611e874c3 more usum prep
species added requires the 'latest personal table' reference to be
USUM's; the other referencs for .SM are fine as there's no possibility
to have a species ID high enough for it to matter.
2017-09-18 22:36:06 -07:00
Kurt
7efd771bf4 Misc refactoring
add docs, move some data fetching to more appropriate class
remove old XP memecrypto support handling, was previously removed due to
net standard/core split
refactor memecrypto to handle multiple save sizes (USUM won't be the
same size save file); placeholder -1 for USUM size
2017-09-16 11:38:58 -07:00
Kurt
9864d84704 Misc fixes/improvements
Reduce memory usage for evo method banlist (static banlist references)
Fix gen6 mega evo flag truncation
simplify QR encode/decode logic a little
Don't apply transparency if transparency is already 100% (skip the loop)
Add gen5 wild pid/tid-sid correlation check
Fix validation value reset (loading gen3-4 pkm without looking at met
tab causes the met location to get reset); fixed by prematurely
validating before setting the value
Fix gen3 pkm with gen4 contest ribbons in gen4/5 getting flagged
incorrectly
2017-08-13 00:21:42 -07:00
Kurt
80196f75ef Refactoring
split Core.PKX into smaller classes, only StringConverter is exposed for
outside namespaces
2017-07-31 23:03:51 -07:00
Kurt
4e9b6be8e5 Convert console output to debug output
output messages are now no longer in release builds, as they are only
visible when debugging in an IDE.
2017-07-01 19:43:51 -07:00
Kurt
3f38b123a3 Refactoring
mostly renaming things, includes a little bit of added sugar and
splitting methods to simplify the codebase.

all methods are now PascalCase
2017-06-17 18:37:19 -07:00
Kurt
0ae907e4d0 Update unused byte usage knowledge
DistByte is actually 16bits; no point changing the name.
The 32bits afterwards are form duration (Hoopa/Furfrou only), and only
exist while the PKM is in the player's party.

The game sets an initial value with days to exist in the form before
reverting (probably on game restart), checking the delta between days
saved. Either way, just set a base value when writing it to the party,
else clear the value if it is not supposed to be used.

Thanks @SciresM !
2017-06-06 22:13:12 -07:00
Kurt
7d39b70d91 Fix wc7 deletion
shift down logic does not apply for array writes; the setter sets empty
slots to fill all required slots
Closes #1142
2017-05-16 21:29:34 -07:00
Kurt
a70a4d5e3f Switch to c# 7 get/set expressions
Add gen5 battle box locked flags
no functional change otherwise, just shorter
2017-05-12 20:32:43 -07:00
Evan Dixon
52c4fbbe97 Converted PKHeX.Core to .Net Standard
Refactored and rearranged things as needed to allow the change
2017-05-11 23:34:18 -05:00
Renamed from PKHeX/Saves/SAV7.cs (Browse further)