From 995344b15377e7bd80d67ffc16db8d8f6e7ef1a6 Mon Sep 17 00:00:00 2001 From: forkless Date: Wed, 3 Jun 2026 01:31:52 +0200 Subject: [PATCH] add migration notification, dev scan_props tool --- CHANGELOG.md | 3 ++ scan_props.py | 98 ++++++++++++++++++++------------------------------- 2 files changed, 42 insertions(+), 59 deletions(-) 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('