Commit graph

636 commits

Author SHA1 Message Date
Kurt
fd02b97ce1 Misc tweaks
Allow nickname->species with span
add ConstantExpected annotations
Correct Gen8b ability set calling CommonEdits instead of direct setter
Slightly better perf on gen5/gen8+ location fetch
Misc pkm ctor fixes for b2w2 trade & wc3 eggs
wurmple evo now has an enum to be more explicit
no recursion for gen5 generator
fix showdown line length check allowing 86 instead of 80
2023-08-27 23:05:50 -07:00
Alexander3a
afc29fb203
Fixed span for PokeDexEntry9SV being too large (#3969)
* Fixed span for PokeDexEntry9SV being too large

Prevents .Clear() from wiping data it shouldnt
2023-08-25 10:08:43 -07:00
Kurt
50608c1b15 Misc encounter tweaks (extract/pass personal)
Removes doublefetch for personal, maybe faster ctor.
2023-08-21 20:07:53 -07:00
Kurt
8dd9e0803d Update dex minmax read offsets
Closes #3943

Also exposes the boolean flag in between the height/weight tuple.
Pretty sure this struct has an unused second half, and is just {byte, bool, byte}[2].
2023-08-20 13:48:01 -07:00
Kurt
9855382b0a Misc encounter tweaks, annotations
EncounterEgg now indicates FixedBall(Poke) for Gen2-5
EncounterSlot2 now indicates Form Random for Gen2 Unown, database
EncounterStatic3 now generates FRLG Gen2 Roamers with correct location
EncounterCriteria now used more heavily for requested IVs
EncounterPossible3 now correctly skips Eggs if eggs are not requested
EncounterGift3Colo now generates Japanese Bonus disk gifts only in Japanese, doesn't validate non-Japanese
2023-08-17 00:07:54 -07:00
Kurt
5637b1775d Fix psk tile choice encode/decode, XY flip
Closes #3953
Add in more annotations & clean up things slightly
2023-08-16 18:51:32 -07:00
Kurt
f632aedd15
Encounter Templates: Searching and Creating (#3955)
We implement simple state machine iterators to iterate through every split type encounter array, and more finely control the path we iterate through. And, by using generics, we can have the compiler generate optimized code to avoid virtual calls.

In addition to this, we shift away from the big-5 encounter types and not inherit from an abstract class. This allows for creating a PK* of a specific type and directly writing properties (no virtual calls). Plus we can now fine-tune each encounter type to call specific code, and not have to worry about future game encounter types bothering the generation routines.
2023-08-12 16:01:16 -07:00
Kurt
d647f15f23 Fix indexing check for tile rotation
Closes #3950
Does not resolve #3953 , separate issue as caused by the April refactor. Need to debug old & new and see where the data is being copied wrong
2023-08-09 00:43:29 -07:00
Kurt
ee9ae63c22 Misc tweaks
Move enum -> ushort instead of int
Redo handling of HOME Volt Tackle (disallow on SWSH Cap Pikachu)
Pass spans instead of strings to use span methods
Reset encounter filters on early abort
2023-07-13 22:18:34 -07:00
Kurt
26cabd022b Update 23.07.09 2023-07-09 14:10:40 -07:00
Zazsona
b340e2327a
Crystal (International) Checksum 2 Fix (#3939)
* Correct invalid OverallChecksumPosition2 offset for International Crystal

* Update SAV2 Checksum validation to check against both Checksum values
2023-07-08 20:21:43 -07:00
Kurt
2ea6ee4e10 Misc fixes
Add sound for adding all XY fashion items (was silent)

Fix Gen7 Resort PKM loading (4 bytes extra per slot)
Fix Gen6 HallOfFame TID/SID validation dropping leading zeroes
Fix Gen6 Best Friends ribbon validation
Treat GO8 as server date restricted, give detailed message outside window
HasTracker => must have HT name
2023-07-08 20:00:41 -07:00
Kurt
6d4cd60461 More fixes/improvements
Improve cctor times for Breeding; direct calls for splitbreed checks; inlined binary searches via generated IL instead of hashset
Fix permitting alpha ribbon on non-alphas in Gen8/8a/8b, disallow Gen8a/8b ribbons for Gen7 Alolan Raichu
Improve some IL generation of EvoChain logic
Add xmldoc for new evotree additions
2023-07-08 12:46:46 -07:00
Kurt
00b3e111f8 Extract some CGear logic
More span based interaction, less allocation.
2023-07-06 22:20:25 -07:00
Kurt
dcc0e79435
Evotree: Evolution Traversal Enhancements (#3936)
Like move validation, evolutions are the earliest thing we wish to traverse when determining what encounters may have originated the current Pokémon. To determine the permitted species-form-levels a Pokémon could originate with, we must devolve a Pokémon by traveling down-generation to origin. Once we have an encounter, we can then evolve it to the current species, traversing upwards from origin to the current format.
2023-07-05 21:14:09 -07:00
Kurt
6964d48adb Move location/capture to Encount
Shared for both roamers
https://projectpokemon.org/home/forums/topic/63405-suggestionbug-gen-5-roamers-block-data-only-shows-info-on-roaming-thundurus/?do=findComment&comment=283912
2023-06-11 11:12:34 -07:00
Kurt
8cc1220056 Minor clean 2023-06-11 10:38:51 -07:00
abcboy101
b0da14b71e
Add Geonet/Unity Tower editor (#3909)
Adds a basic editor for recorded Geonet/Unity Tower locations for the Gen 4/5 games, building on this [post by Danius88](https://projectpokemon.org/home/forums/topic/62055-bw-b2w2-unity-tower-geonet-and-passerby-research/).
So far, I've implemented buttons that set all locations (including unused ones), set all legal locations, and clear all recorded locations; and checkboxes to toggle whether the whole globe is visible (used in Japanese games) and whether the ferry to Unity Tower is unlocked.

Haven't implemented any UI for editing the status of individual locations, since I'm not sure how to lay it out.
Also haven't implemented anything related to how the data of the other players in Unity Tower is stored.
2023-06-11 09:38:24 -07:00
Pasquale Nardiello
3ca16b435c
[SV] Give All Clothing button (#3876)
* Mapped Fashion items for S/V and added injection logic
* Added 'Unlock Clothes' button in Trainer Editor's misc section alongside ComboBox to select type to add all.
2023-05-26 10:24:27 -07:00
Kurt
34f4df3d4b Misc tweaks
Closes #3878

Pictures are Zoom instead of AutoSize so there's no need to downscale or dynamically position the smaller 2.
Fix my oopsie on docked tabs (hid the Cancel/Save button!), change sizing.
2023-05-11 20:56:45 -07:00
Pasquale Nardiello
d915bb6039
Img visualizer (#3875)
* Added Boxes to view Current Trainer photo and Trainer Icons

* Adjusted Images Visualization

* Updated Pictures decompression to final DXT1 version
2023-05-10 23:50:50 -07:00
Kurt
3bde807bf2 Gen5: Add second roamer slot 2023-05-09 11:45:19 -07:00
Kurt
a09a6263c7 Extend filename species 000's to 4 digits
Now that we're past the 999 count...
2023-05-07 15:29:40 -07:00
sora10pls
e5cc0ffd6b SAV5: expose number of unlocked boxes 2023-04-30 18:59:51 -04:00
sora10pls
d55bf21466 Minor fix to LGPE fashion cheat
oops
2023-04-30 12:14:05 -04:00
sora10pls
6eb82e3847 Add unlock all fashion cheat for LGPE 2023-04-30 12:01:08 -04:00
sora10pls
7e2552d918 Expose LGPE current fashion/appearance 2023-04-28 21:14:24 -04:00
Kurt
998b8f1ce0 Minor tweaks
Add unit test for VC kata/hiragana edge case
De-duplicate some slot change notifications
Span in more spots
2023-04-22 17:51:32 -07:00
Kurt
5bdc6b9ef8
Privatize some static fields, more robust legal helper classes. (#3865)
* Uses LearnSource more throughout the codebase when appropriate, rather than loosely coupled pivot methods.
* Hides Learnset/EggMove data inside the LearnSource classes.
* Extracts functionality from the large Legal class & partial Table*.cs files into better performing helper classes.
* Cleans up some code from prior LearnSource commits.
2023-04-20 21:23:15 -07:00
Kurt
fa9a809751
Encapsulate item pouch arrays/etc for finer control (#3860)
* Extract/encapsulate inventory legal arrays to interface+class

Hiding them behind methods allows these to be left as ReadOnlySpan<ushort> and thus never allocate on the heap.
Also refactors out some logic for checking if an item is legal.

End result feels more maintainable and is less bloaty (no more passing in a nullable func)

Batch editing
* Add HasType filter

```
=HasType=11
.HeldItem=Meadow Plate
```

slaps a meadow plate on any pkm with grass type
Use `=PersonalType1=11` for only primary grass types; only-secondary-type grass will not match it.
2023-04-16 12:58:07 -07:00
Jonathan Herbert
52a24a7bb0
Expose FashionUnlock8 From SAV8SWSH (#3859)
Also document what the relevant regions are as constants.
2023-04-16 12:32:25 -07:00
Kurt
5b484f5712 Use byte[] instead of int[] for tile sel 2023-04-15 11:28:35 -07:00
Kurt
c73264d4f3 Minor minor perf
Small changes to reduce some allocations
2023-04-15 01:58:37 -07:00
Kurt
ecef31f167 Minor clean 2023-04-13 00:05:10 -07:00
Kurt
4384cadefc Add more xmldoc 2023-03-31 13:00:34 -07:00
Jonathan Herbert
5cb31d660d
Add Enrollment Date To SaveBlockAccessor9SV and SAV9SV (#3851)
Add Epoch1900Value based on Epoch1970Value's API and the method @Lusamine described in #3800 to access the Enrollment Date From Scarlet and Violet Save
2023-03-29 20:44:04 -07:00
sora10pls
dd157813c4 Misc changes
Re-order tables according to National Dex ID instead of Dev ID
Label unknown fields for SV player appearance/fashion
2023-03-28 16:00:44 -04:00
Kurt
5c13183d02 Less allocation, minor tweaks
NET 8 will have a Shuffle method, which can get rid of the overload in Util.
Batch Editor no longer crashes the program when selecting OT_Trash/HT_Trash/Nickname_Trash via dropdown.
2023-03-27 00:11:42 -07:00
Kurt
82309cf99d Use Memory<byte> for Gen4 saves
Instead of allocating a buffer for Storage/General, just point within the raw Data, as a Memory<byte> reference. Most of the uses were already using it as span.
2023-03-26 15:16:12 -07:00
Kurt
aa13c93e65 Add misc generic constraints
Resolves some allocation analyzer issues
2023-03-25 23:28:28 -07:00
Kurt
0087ccb44f Use span for savefile slot API
No more offset fetch
2023-03-25 23:14:50 -07:00
Kurt
5ce3e734b8
Skip initial cctor alloc on non-byte primitives (#3850)
Runtime/jit repoints these to the dll rather than heap if we're Little Endian (always, otherwise will allocate like before).

Eliminates quite a few static constructors, so even faster startup. Items later.
2023-03-25 17:55:55 -07:00
BlackShark
6247a61bd3
Fixed offset for MysteryEvent3RS checksum (#3847)
* Fixed offset for ME3RS checksum

* Added Subtitle for WonderCard3
2023-03-21 16:45:37 -07:00
BlackShark
a31217ef6a
Various changes to Gen 3 Mystery Data (#3842)
* Various changes to Gen 3 Mystery Data

* Update Gen3MysteryData.cs
2023-03-20 16:26:23 -07:00
Jonathan Herbert
547ec8ad12
Fix SwSh Treasure Inventory Tab Mislabeled As Mail (#3832) 2023-03-08 11:52:18 -08:00
Kurt
29b3b695bd Pre-allocate some dictionary sizes
Skips the bucket array resizing steps
a 256 key dict will garbage 5KB; StringConverter2KOR wastes 100KB of garbage.

Zukan7b: save 144 bytes and eliminate cctor
2023-03-04 20:00:27 -08:00
abcboy101
30aa1cc9aa
Add Geonet location editing for Gen 4/5 (#3810)
* Add Geonet location to SAV4 and SAV5

* Allow commas to be escaped in subregion names

* Add missing 3DS subregions

* Add Geonet location editing

* Ensure null values are kept as the first option in GetCountryRegionList

* Add Geonet locations in CHS/CHT
2023-02-26 16:33:53 -08:00
Lusamine
0fa4ec8dce Fully update button naming/localization for propagating SV raids
Standardizes capitalization of "raid" in the editor and updates
shortcuts to indicate holding Shift to propagate seed.

Closes #3807
2023-02-23 11:08:33 -06:00
Kurt
552676ed3a Add counter overflow check
Never will happen, but not worth arguing over because this is essentially what the ROM does. Entry to this method requires both OK.
91c040b081/src/save.c (L587-L605)
Closes #3805
2023-02-23 00:48:03 -08:00
Kurt
6daad3a1d1 Update CGearBackground.cs
Closes #3789
2023-02-16 23:51:15 -08:00