[Scummvm-devel] Porters: Adding seeking to InSaveFile for HE games
max at quendi.de
Sat Apr 22 04:41:02 CEST 2006
Dear porters, dear SCUMM HE folks,
currently, the HE part of the SCUMM engine has to abuse the File API
(no offense intended) for the _hFileTable (see scumm/he/intern_he.h),
to implement the file read/write APIs found in the HE games.
The HE engine uses lost of Common::File objects aggregated in
_hFileTable to allow read/write/seek access to files in the savepath.
This is not so nice. Much better (i.e. portable) would be to use (In/
Out)SaveFiles and the SaveFileManager.
Luckily, files are only opened for either reading or writing, not
both at once. So I would have already converted the code, but for one
problem: HE games need to seek in those "save games", which is
currently not possible.
There are two ways around this: I could simply read the whole file
into a buffer, and do seeking in there as desired. Much simpler,
however, would be to change InSaveFile to derive from
SeekableReadStream instead of ReadStream. For the default save game
support, that's totally trivial to do. Looking through the savegame
implementations for DC, PalmOS and PS2, I believe it's rather easy to
add seeking there, too (but please correct me if I am mistaken here).
So, my plan is to change InSaveGame accordingly and then move the HE
engine over to use SaveGameManager as it should. I'll implement this
next weekend, unless somebody objects (or unless all affected porters
give me a "go" before that :-).
A nice side effect of this is that we can finally get rid of the
"directory" parameter of Common::File, which has been a thorn in my
side for some time now.
More information about the Scummvm-devel