Entry 346

A lone slot file imports with its index record

Filescrates/piney-desktop/src/card.rscrates/piney-game/src/main.rsREADME.md

The user's repro save for 345 is one slot file, work/savecards/repro/dhdata12 (0x8530 bytes, INF). Put on the card, the load screen showed the slot unused. That is the game's rule. A slot is used only through its record in the save directory's index file (BASLUS-20267DOTHACK/BASLUS-20267DOTHACK, twelve 28-byte ccSaveDataInfos; the save page): status 1, and a sum the load checks. A slot file copied in without that record reads as empty. --import-card (338) took only whole save directories, so it refused the file.

card::import now also takes a lone slot file (dhdata01-dhdata12, or a folder holding only such files). import_slots writes each into its volume's directory and rebuilds its record as ccSaveSys's save does (SaveSys::write, 0x00173cf8): status 1, level, clearFlag, parodyFlag, the name from plName, the 16-bit sum of the file's bytes, playTime. A missing directory is first made as make_dir makes it, twelve zeroed slots and a zeroed index. An existing one is copied to the backup- folder first, and the other slots' records are kept.

The size picks the volume. 0x8530 is Infection's. 0x8d84 is any later volume's, and also an Infection slot as a PCSX2 export can hold it (338), so it takes the volume of the running disc (the console) or --volume (the command line) and is refused without one.

a_lone_slot_imports_with_its_record checks the record (check_right_info passes, name, sum), the other slots left empty, the slot read back, the 0x8d84 case with and without a volume, and a size of no save. The user's dhdata12 imported into an empty card: slot 12 used, Kite, level 11, clear 0, sum 0xd4f7 (the file's own), 6.28 hours.