The issue comes from BBSaveHandler.cpp CSaveLoadTestPC_SaveContentsExist, it's hooked as bool rather than int, when file_exists is called, eax is written as the attributes of the file, if "Allow files in this folder to have contents indexed" is unchecked, this will return 0x20XX, then the function will write al as true and return. Generations checks if file is valid by comparing the 4 byte result to 1 (see 0x5723CA or 0xD554C4), so 0x2001 will fail saving.
Repro steps:
- Right click on save file, Properties, Advanced
- Uncheck "Allow this file to have contents indexed", OK and apply
- Boot Sonic Generations, observe the below autosave prompt will show up, indicating saving is not working
- Go to Options, change any options and back out to Press Start
- Press start and go to Options again, observe the setting did not save
