I had the same idea a while ago. I didn't feel like having to have all
different versions of MAME either. I couldn't get it to work. And I
was only trying to convert a recording from, say, DOS MAME 34b3 to DOS
MAME 35b6 format (so staying within the same platform). Converting
from a headerless 16 bytes per frame .inp to a 32 bytes per frame .inp
with a header is easy, but since drivers and MAME itself have changed,
I guess there are slight timing differences that will throw playback
off. And that's even staying within the same platform. Across
platforms, there's also the problem of platform-dependent parts of the
implementation. For some games, between some versions of MAME, it's
possible to convert .inps, but, as far as I could see, for the
majority it does not work.
<p>
It should, theoretically, be possible to convert an .inp from a given
version of MAME to another given version of MAME, but, most of the
time, this will probably require making "real" changes to the .inp,
such as converting a "no input for 46 frames, followed by going left
for 13 frames" to "no input for 45 frames, followed by going left for
14 frames".
<p>
The only other thing I can think of is to take a given version of MAME
for one platform and then emulating that on another platform (either
by changing and recompiling, or by using an actual emulator).
<p>
In one of the .36 beta versions the following change was made: "- The
functionality of osd_skip_this_frame() is now more strictly defined
(see osdepend.h). Ports not complying with that must be updated,
otherwise problems with certain drivers might arise.". This sounds
like an attempt to make .inps compatible across platforms for the same
version numbers of MAME, but I don't know if it has been enough.
<p>
I am not saying it is impossible, but (apart from a few easy cases) in
my opinion, an .inp conversion program would require a LOT of work.
<p>
Cheers,
Ben Jos.
--
walbeehm@walbeehm.com