Vector Generator Speeds

From: Zonn <zonn_at_zonn.com>
Date: Mon Jun 03 2002 - 17:55:20 EDT

I thought this might be interesting to those of you who are designing PC->VGs.

I'm at the point where I need to know how fast a VG must run to emulate all the
known X/Y games.

Instead of knowing how fast the different monitors run, and running the VG at
that speed, I decided to try and figure out how fast the games actually ran.

This is the results, but first, some background:

I started by picking a standard to describe the speed of a VG. I went with
microseconds per inch -- or How many microseconds does the vector generator take
to move the CRT trace 1" on a 19" monitor. Since different monitors use
different voltages, this rating allows all 19" monitors to be treated equally.

13", 15", and 25" are run with the same inputs as the 19" monitors, so a trace
on a 13" monitor will be moving slower, and on a 25" it will move faster, but
the VG will run at the same speed for all the monitors, so I standardized on the
19" monitor's "inch" for speed comparisons.

Using a standard 19" tube, with a viewable 18" diagonal screen, gives a viewable
screen width of 14.5". All the VGs were symmetrical for X and Y, so I only
calculated X's speed.

The DVGs were the easiest. They all use 10bit DACs and divide the screen into
1024x768 addressable positions. All that must be done is figure out the clock
rate of the counters going into the DAC to determine the speed of the VG.

For instance Asteroids requires 1023 steps of the DAC counter to draw a line
from one side of the monitor to the other, which is 14.5". The counters are
clocked at 1.5mhz, so it takes 682us to draw a 14.5" vector, or 47us to draw a
1" vector.

AVGs were a bit more difficult to calculate. I had to determine the fastest
speed the integrator's capacitor could charge, based on the AM6012 specs, then
follow the voltages through gain stages to the outputs, then use these voltages
to determine how fast it would take to draw a vector from -8v to +8v. This is
the voltage change required on a WG or Amplifone draw a full 14.5" vector.

The thing about AVGs is that their draw speeds are software selectable by
changing the scaling. So the numbers for the AVG are the maximum speeds the AVG
can be run, not necessarily the speed a particular game is actually running.

Also shown in the table is the Normalized Average vector speed. To actually
draw an angled vector at full speed would required a multiply and divide to
determine the ratio needed for the slower DACs value.

Since these VGs did not have specialized MUL/DIV for vector ratio calculations,
they all used a normalization technique to determine the vector drawing speeds.
This uses simple shift and test logic, but vector draw speeds can be nearly 100%
slower using the shift logic, than a MUL/DIV would allow. On the average, random
vector angles, will be drawn 50% slower than the VG would allow, given MUL/DIV
abilities. But note: Horizontal, Vertical and 45 degree angles are drawn at
full speed, so any emulation must be able to keep up with the maximum draw
rates.

Here's what I came up with, based on the schematics I have:

DVGs:

Game us/inch Normalized Avg DAC clock rate
---- ------- -------------- --------------
Atari DVG 47us/inch, 70us/inch 1.5mhz
Omega Race 47us/inch, 70us/inch 1.5mhz
Sega DVG 27us/inch, 40us/inch 2.57mhz
Cosmic Chasm 24us/inch, 36us/inch 3.0mhz

AVGs:

Game us/inch Normalized Avg
---- ------- --------------
Tempest 51us/inch, 76us/inch
Star Wars 6.3us/inch, 9.4us/inch

A couple of interesting things I noticed, if you compare the above speeds with
monitor speeds at http://www.arcademonitors.com/vector_slew_rates.html.

First you see that the Sega DVG runs at just about the limit of what a WG 6100
monitor is capable of. This explains why you can almost play the Sega games on
a WG monitors. The monitor is capable of keeping up with the fastest drawn
vectors (barely), but probably is not capable of keeping up with the high speed
jumps between vector draws.

Second, the Star Wars vector generator is able to draw vectors faster than any
of the listed monitors! So software has obviously slowed down the vector draw
speeds, but to what speeds I don't know. It would take hooks in an emulator, or
an analysis of the disassembled code to determine what speeds Star Wars uses to
draw its vectors. Future work...

Note that for a DVG to keep up with the Star Wars AVG you would have to clock
its DACs at 11.19mhz!! You can see one of the reasons Atari went to an Analog
VG!

For our VG we've used a jumper to change between two different draw speeds,
depending upon the vector monitor being run, the above calculations were to
determine what those speeds should be.

I have the luxury of having MUL and DIV instructions, so I can run all vectors
at full speed (no normalization problems).

Right now it looks like if I had a slow speed setting of 27us/inch for WG
monitors, I would be able to emulate all Sega games on a WG monitor. Since I
can run all vectors at 27us/inch, and many of the Sega vectors average around
40us per inch, I will have extra time between the vectors to allow the WG
monitor to make it to the start of a new vector before drawing, and still get
all the vectors drawn during the allocated refresh rate.

By having a high speed setting of 10us/inch, for high speed monitors
(Amplifones, 6401, G05, Sega?), I should be able to emulate all current vector
games.

I can always change these speeds through experimentation, but you have to start
somewhere.

I hope this helps all those others who are also designing PC->VGs!

-Zonn
---------------------------------------------------------------------------
** To UNSUBSCRIBE from vectorlist, send a message with "UNSUBSCRIBE" in the
** message body to vectorlist-request@synthcom.com. Please direct other
** questions, comments, or problems to neil@synthcom.com.
Received on Mon Jun 3 15:11:10 2002

This archive was generated by hypermail 2.1.8 : Fri Aug 01 2003 - 00:33:28 EDT