Commit graph

19 commits

Author SHA1 Message Date
22d431d410 Add actual members of DATriggerData 2025-02-25 19:45:36 -05:00
2e0403beb1 Add a much better, faster and more ergonomic way to parse structs
This adds a macro that helps deserialize structs when their properties &
types are known ahead of time. It's sole job is gluing different binrw
macros together so I don't have to.

The nice thing about this is that you have more direct access to the
underlying data.
2025-02-25 19:30:16 -05:00
cdb40e62cc Improve tagged object deserialization even more
Now there should be less random "Nones" and more resilient parsing based
on reported sizes and not EOF.
2025-02-24 18:33:32 -05:00
e725df9374 Hide compressed blocks from binrw output 2025-02-24 18:21:25 -05:00
2ce74d3177 Add TODO about none checks 2025-02-24 18:20:23 -05:00
be82857aba Find the magical missing bytes at the end of Persistent.sav
Turns out there can be multiple compressed blocks in a single .sav file,
so now we read all of them.
2025-02-24 18:15:54 -05:00
153c8610c9 Check magic of compressed .sav files 2025-02-24 17:48:17 -05:00
8f55d00e24 Complete Persistent.sav parsing, fix up a ton of things
This is unfortunately one giant commit, but this now (partially) parses
Persistent.sav. There is still some structs and data left to parse, and
we're suspiciously missing 3KiB of data at the end. But... progress!
2025-02-24 00:30:16 -05:00
02269ecc68 Add roundtrip test for LocalProfile.sav 2025-02-23 17:04:26 -05:00
8713a48351 De-duplicate all the GUID structs, implement better debug display
This replaces several of the duplicate GUID-like structs, and throws
them into a struct that more closely resembles FGuid.
2025-02-23 16:14:44 -05:00
4eb1e7dd04 Remove old magic-based property enum
This is now replaced by the pre_assert and string-based version, which
is superior.
2025-02-23 16:03:08 -05:00
ef0f4adb6f Replace manual string parsing/old property-magic system in Entry 2025-02-23 16:00:35 -05:00
fe2cb4e624 Remove NameProperty
This has the same memory layout as StringProperty, and we don't need to
duplicate the work.
2025-02-23 15:54:17 -05:00
f304304d19 Simplify string reading
A lot of them are just u32 length + byte string, and can be moved into
a common parsing function.
2025-02-23 15:25:50 -05:00
a4615b29ce Remove leftover binrw debugging 2025-02-23 15:04:13 -05:00
e5b9e9150e Remove currently unused EnumProperty 2025-02-23 15:03:32 -05:00
e92686e179 Clean up code, imports, and other misc tasks 2025-02-23 14:43:10 -05:00
9dd335f80e Implement proper map parsing, fix array parsing
Finally finished and figured out how maps are handled. It didn't encode
the number of items, it's based on how many bytes you read. I also fixed
arrays so they're also correct, and we'll see if sets break.
2025-02-23 14:38:35 -05:00
aa26d2934f Add initial files 2025-02-19 19:34:13 -05:00