RE: Sega Speech - SP0250/SP0256 (long)

From: Frank Palazzolo <palazzol_at_tir.com>
Date: Thu Dec 04 1997 - 21:38:01 EST

It was me. I'm currently working with Ron Carlson, who was the
project head for the design of the Mattel Intellivoice, to
reverse engineer and emulate the Intellivoice Module. It is
based around an SP0256, along with a Parallel in/Serial out FIFO
chip called the SPB640, which feeds the SP0256 with serial data.
In this way, it acts like one of the GI Serial ROMS.

My hope is to emulate the SP0256 for the Intellivision and the
SP0250 for "another major emulator project" :)

The SP0256 does have the same digital filter stage as the SP0250,
from what I can tell. However, the serial data going to it is not
simply the coefficent data. It is a mix of instructions and immediate
data for the 4-bit micro in the SP0256.

I have not yet acquired the instruction set and data format info from
Ron yet, nor the details of the serial clocking. However, he has
promised me both. He has a 100 page programming manual for the
SP0256!!

It does support all of the synthesis modes mentioned. The instruction
set has 16 instructions including register loading, register deltas,
jumps, and a single level stack.

The Sega speech data should be able to be converted into this (SP0256
compressed) data, once the format is learned. I've currently extracted
the SP0256 samples from the INTV "Space Spartans" cartridge, and plan
to extract the "SP0250 Space Fury" data next.

Clay, if you want to share info on this stuff I'll give you everything
you have if you'll do the same.. :)

One more note regaring Mr. Nyquist. The Intellivoice takes the SP0256
output and runs in through one impressive analog filter. It is a 5-pole
elliptical low-pass implemented with generalized impedance converters.

Here are the design criteria...(fixed pitch font warning)

> loss frequency
> nominal min max
> high-pass rollofff -6 dB / octave 100 Hz 90 110
> below 200 Hz
> low end reference point 0 dB 400 Hz 360 440
> low-pass rolloff -3 dB / octave
> end of pass band about -6 dB 4200 Hz roughly
> break point from pass band -12 dB 4340 Hz 3890 4460
> stop band -44 dB 4890 Hz 4340 5370
> stop-band rolloff -120 dB / octave "brickwall"
> first major null -60 dB min 5000 Hz 4950 5050
> second null -60 dB min 6810 Hz

If you want to see a schematic of this or just follow along with the
reverse-engineering of the Intellivoice, my web site is coming
together at http://www.2bits.simplenet.com/

Thanks,
Frank Palazzolo

----------
From: Clay Cowgill[SMTP:clayc@diamondmm.com]
Sent: Thursday, December 04, 1997 2:53 PM
To: vectorlist@spies.com
Cc: Clay Cowgill
Subject: Sega Speech - SP0250/SP0256

Ok a while back someone was talking to me about possibly using an SP0256 in
place of an SP0250. Who was it? :-)

I got to looking this possibility last night. And you know what? It looks
possible.

The SP0250 (like Sega uses) has an 8-bit parallel interface. You place
data at the bus and strobe a "Data Present" pin. You do this with 15 bytes
which the SP0250 uses as a single frame of sound.

The SP0256 has an internat ROM that contains the speech "frames" for an
English-language type allophone set. There are address lines that select
one of 64 allophones or pauses that when sequenced make up words. So far
so good.

The interesting part is that the datasheets for the SP0256 state that it
supports LPC, formant, and allophone synthesis. Curious.

Looking at the block diagram, the SP0256 has facilities that allow a serial
bitstream to be input to the part INSTEAD OF the built in allophone tables.
(Hmmmmm...)

The SP0250 and SP0256 are clearly relatives-- they share the same output
specifications, the same number of voicing coefficients, and the same clock
rates. Soooo, here's where it gets interesting...

The SP0256 *might* have 2 more registers than the SP0250. Kinda hard to
tell from the somewhat sketchy info available on them. The SP0256 also
supports an external serial voice ROM that can bypass the internal
allophone tables. I think this is probably a functional equivalent of an
SP0250 with external parallel ROMs feeding it data. 

So here's the idea:

1) figure out the timing relationship between the serial input on the
SP0256 and the Serial ROM "control" lines. There is something that goes on
with the address getting shifted out as a 16bit serial stream as well..
Does anyone have anything that uses an SP0256 chip with an external SERIAL
speech ROM? Can I borrow it? ;-)

2) The SP0250 has a test mode that will output a "serial stream" from the
internal bus. Capturing this while playing samples from the sega games
might be compatible with the SP0256's serial input. (Kind-of a stretch,
but it could happen.)

If the timing for the serial input to the SP0256 can be figured out, we
might be able to just take the raw data from the sega speech board, shift
it out serially to the SP0256 and see if it works. It might. Knowing more
about the protocols involved I'm positive it could work (maybe with some
re-arrangement of the data needed), but this might just have to do for now.
;-)

So... Anyone have any information on the SP0256's serial voice ROMs? (Or
an old product that might use them?)

Thanks,
-Clay

Clayton N. Cowgill Engineering Manager
_______________________________________________________________________
/\ Diamond Multimedia Systems, Inc. clay@supra.com
\/ Communications Division http://www.supra.com/
Received on Thu Dec 4 18:46:29 1997

This archive was generated by hypermail 2.1.8 : Thu Jul 31 2003 - 23:01:04 EDT