I had an idea for that but I stoped persuing it when I reached the 3K bootloader size ( I just like the 1K extra space too much ) and a sketch will get access to exclusive save data in flash too.
What I had in mind is that each game header has a page address pointing to a 4K block
where the EEPROM data is backuped to/ restored from (4K because of minimum erase size)
That same page address is also stored in one of the reserved interrupt vectors of the flashed sketch (this is done by the flash builder tool) just like it’s done to access the sketch data file in flash now.
Prior to flashing a new sketch the EEPROM page is read from the vector, the 4K block at that address is erased and EEPROM is backed up to it. Then the new sketch is burned, the EEPROM page address is read from the vector and the EEPROM backup is written to EEPROM.
The 16 byte system EEPROM area wouldn’t be backed up for convenience and sanity