[comp.sys.m6809] GF9 rational

jimomura@lsuc.UUCP (Jim Omura) (11/24/87)

     This is partially in response to mail I've received recently
and partially to "set the record straight".

     First, the way it all started was like this:

     I've been using the CoCo3 for some time now, pretty much
restricted to OS-9 usage generally.  I also started using the Atari
1040ST over a year ago.  I got involved with some art programs
on the ST and liked them.  Early on I bought Jim Kent's Aegis
Animator, which was my first taste of computer generated animation.
At least it was my first attempt at producing any.  I also had
Neochrome and Degas and Degas Elite.

     With the arrival of Degas Elite by Tom Hudson, Jim Kent
realized the potential for animation on a page/frame image
basis.  This lead to Flicker.  Now, while Jim was working on
Flicker, I started helping him via beta testing.  This gave
me a steady stream of state of the art pieces of graphics
software and Jim evolved Flicker into CyberPaint.  During this
time, Tom came up with Delta file animation for the ST and
Jim used some ideas from Delta files and rethought the .SEQ
format for CyberPaint, yielding the highest compression ratio
of any graphics format on the ST.  He later took these ideas
and came up with RIFF format on the Amiga.

     Although I've never torn down the .SEQ compressed, .DLT
and RIFF formats, I know the basic theories behind them, and
I've done some programming with Degas Elite formats, so I had
a fairly good idea of how they worked.  I was, from early on
in the Flicker development interested in porting Flicker to
the CoCo3 under OS-9.  Jim Kent and I have discussed it and
he allowed me to use his Flicker design screen format and
user interface for an art program, vaguely defined.  Possibly,
if he has time he may port Cyberpaint to the CoCo3 yet.
He's very busy though, so don't hold your breath.

     Ok.  As I've said, I prefer standards.  So, why did I
look for another format?  Clearly I could have started with
an ST graphics format or Amiga graphics format right from the
start.  Well, I *knew* that eventually I'd want to do page
based animation like CyberPaint.  Could the 6809 handle the
unscrambling of the .SEQ format or RIFF format fast enough?
Most likely not, but even if it can, I'd like something faster
to leave the possibility of running concurrent processes in
the background.  We need something closer to the CoCo3 hardware
than the Amiga and ST formats.

     So, there it was.  I wanted a CoCo3 
format.  The question then was whether there was a good CoCo3
format which could be adapted to animation and was fairly
standard.  Answer: no.  At least nothing public domain, or
otherwise available to me.  So, that's how it all started.

     This implies a few things.  First, although it's somewhat
generalized, it's mainly designed to be fast on the CoCo3.
If you want to run a .GF9 animation file on an ST or Amiga,
I expect those machines are fast enough that they may even
be able to convert them on the fly.

     Second, although I've left some room for users of Commodore 64
or Atari XE 8 bit machines to *extend* this format to their usage,
it would likely not be possible to use most of the CoCo3 formats
by unpacking them on-the-fly, let alone converting on the fly.

     About the 1/64th time gradation, I it arises like this:
The CoCo had 1/10 sec. ticks.  The CoCo3 has 1/60 sec. ticks.
OS-9 68000 is generally used with 1/60 or 1/100 sec. ticks.
In otherwords, tickrates can't be counted on to work out
evenly for 1/60 sec. field rates (North American TV) or
the 1/50 sec. European field rate.  There not being a good
"magic" number possible from that point of view, I decided to
look at it from the programming viewpoint.  1/64 is finer
gradation than the CoCo3 can be expected to produce.  That's
typical of my designs.  It means that someday really excellent
equipment may surpass what I have and make use of the format
spec.'s capabilities.  In fact, I expect that 16 frames per
second is the limit of speed more likely to be useful.  So,
that being a multiple of 1/64, it works out pretty well.
Furthermore, working in binary with a 1/64 based time system
might be cleaner when you mix variable duration frames.

     Besides that, I noted in the spec that the timing is *not*
to be assumed accurate.  Being an interrupt based multi-tasking
system, frames may not occur precisely ontime.  A separate
"rendez vous" system may be added later for more precise synching
at certain points.  So, you can think of the framerate as 1/60
sec. and work with that presumption.  As far as I'm concerned,
it's not wrong.

     Anyway, I'll be posting a new revision shortly.  I won't
be posting many more.  I'll develop it just a bit more and then
stop for now freezing what I'll have done, until someone asks
for further changes.  Many of the ideas I have right now are,
as you may have guessed, taken from Jim Kent's work, but with
some of my own thinking as well.

Cheers! -- Jim O.
-- 
Jim Omura, 2A King George's Drive, Toronto, (416) 652-3880
ihnp4!utzoo!lsuc!jimomura
Byte Information eXchange: jimomura