This evening I finally decided to implement support for the IDX file format in my C2NEmu PC client for TAP playback:
C2NEmu play utility, rel 1.3 - (C) 2016 Luigi Di Fraia Communicates with a C2NEmu device to play TAP files Usage: c2nemu-play.exe [options] <virtual serial port> <file> Options: -i <index file> -p <position in index file (default is 0)> Examples: c2nemu-play.exe COM9 Vendetta.tap
I myself contributed to the IDX file format (initial contributors were SLC and Gideon), which is pretty simple to understand: it allows a host system such as a Commodore 64 to have quasi-random access to data stored in TAP files, which are sequential in nature, being tape dumps.
An example should do wonders. Continue reading 🙂
For testing purposes I joined together (it’s not a simple append operation if you want to do it properly!) two TAP files, “Silkworm” and “The Great Gianna Sisters”, into a single file, joinedtape.tap. I then defined an IDX file, joinedtape.idx, with the following contents:
# This is a comment 0x14 Silkworm 0x8306a The Great Gianna Sisters ; This is a comment too ' This is another one too
I subsequently ran the C2NEmu client with the following options:
c2nemu-play.exe -i joinedtape.idx -p 1 COM3 joinedtape.tap
The result of the above is that C2NEmu started playback of the TAP file at file offset 0x8306a (“-p 1”), which is where “The Great Gianna Sisters” starts:
C2NEmu play utility, rel 1.3 - (C) 2016 Luigi Di Fraia Communicates with a C2NEmu device to play TAP files 00000020 (hex: 00000014): Silkworm >> 00536682 (hex: 0008306a): The Great Gianna Sisters Buffer time=3:42 Success condition received from COM3
The above is just an example, of course, but as SLC rightly pointed out users might want to think of a game such as one of Epyx’s “Games” with multiple events that one can enable individually. Users would be able to skip the section of the TAP file that loads non-active events and jump straight to useful sections!
Not only that: by scripting multiple invocations of the client application, the tape loading experience on a Commodore 64/VIC20/etc. could improve significantly for those who are nostalgic enough to seek this sort of experience 🙂