diff --git a/CHANGELOG.md b/CHANGELOG.md index b880692..dac0ec0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,9 @@ All notable changes to NotAlterra are documented in this file. current user's default save locations (`%LOCALAPPDATA%` on Windows, Proton + XDG data on Linux). No scanning of other profiles or system drives. If nothing is found, use **Set save folder** as before. +- **Migration notification** — old backups in `NotAlterra_Backups/` are + migrated silently on first launch with a log entry. The user is informed + their original data remains untouched. ### Removed - **`config.ini` eliminated entirely** — no save path, disclaimer flag, or diff --git a/scan_props.py b/scan_props.py index 57eb314..184e0d8 100644 --- a/scan_props.py +++ b/scan_props.py @@ -1,77 +1,57 @@ #!/usr/bin/env python3 -"""Dump specific property values from GVAS files with debug.""" -import struct, sys, os +"""Extract GVAS property values using correct offsets.""" +import struct, sys data = open(sys.argv[1], 'rb').read() -def read_u32_at(off): +def u32(off): if off + 4 > len(data): return None return struct.unpack_from(' 0: - found_val = data[next_offset+9:next_offset+9+slen-1].decode('utf-8', errors='replace') + slen = u32(val_off) + if slen and slen > 1: + return data[val_off+4:val_off+4+slen-1].decode('utf-8', errors='replace') elif slen == 1: - found_val = '(empty)' + return '(empty)' elif type_name == 'DoubleProperty': - voff = next_offset + 5 - if voff + 8 <= len(data): - v = struct.unpack_from('