[Image] ---------------------------------------------------------------------------- Reverse-Engineering the... [Image] I am currently reverse-engineering the Intellivoice with the hopes of simulating it, and being able to generate voice data for new games. I have been lucky enough to enlist the help of Ron Carlson, the man who directed the entire Intellivoice Project at Mattel. Much of the info on this page was provided by him. (Thanks Ron!). Also - I have to thank Mark Magness, who has provided Data Sheets from his GI Databook. So far, I have: * Unpacked the Space Spartans samples to separate, 8-bit files * Recreated the analog lowpass filter and volume control section schematic * Recieved all the information regarding how the SPB640 maps into the CP1610 address space * Begun to implement the digital filter common to the SP0250 and SP0256 * Table values for the 8-to-10 bit lookup tables done in the SP0256 digital filter Info Still Needed: * Instruction Set for the 4-bit micro inside the SP0256 * Data Format of the data stream sent to the SP0256 (Without this info I can proceed, but at a slower rate... ) ---------------------------------------------------------------------------- The SPB640 Need Pinout Here Here is the memory map of the SPB640 with respect to the CP1610 address space, as provided by Ron Carlson: Valid SPB AD2 AD1 AD0 Functions hex addr read the SPC cycle write to SPB cycle ----------------------------------------------------------------------------- 0080 1 0 0 Bit 15 outputs LRQ cond. Bus copy SD0-SD7 to D0-D7 (speech chip start addr) 0081 1 0 0 Bit 15 outputs full/ Bit 10=0; copies SD0-SD9 not full fifo flag onto the STACK Bit 10=1; clear FIFO array 0082-00FF 1 0 0 copies D0-D7 to SD0-SD7 copy SD0-SD7 to D0-D7 01FE-0BFF 101 - 011 copies D0-D7 to SD0-SD7 copy SD0-SD7 to D0-D7 1 1 1 Tri-state SD0-SD15 accepts no inputs Remember that the data read or written by the CP1610 could be 16-bits wide. SD0-SD7 refers to the peripheral bus that was unused but available for future expansion. At this time I am still a little unclear how the FIFO contents map into the SP0256's address space, but newly acquired datasheets on the GI serial ROMS should clear this up, I hope. ---------------------------------------------------------------------------- The SP0256 New Info! - There are documented test modes for the SP0256. This should make it much easier to figure out how it works. See the datasheets for details: Datasheets The SP0256 contains a 4-bit GI micro, 2K of internal ROM and a 12-pole digital filter. It can be made to speak using its internal ROM data, or using external serial data. This is provided by the SPB640 in the Intellivoice design. (In other applications, it could be provided by a GI serial ROM.) The internal ROM in the SP0256 used in the Intellivoice was pre-programmed with words and phrases which could be used in all cartridges. One interesting note - The SP0256-AL2 (sold a Radio Shack for a long time), was the same chip programmed with English allophones instead of INTV game phrases! Instruction Set - Unknown to me at this time. I know it had 16 instructions. I believe these include a single level stack, register immediate loads, and register immediate adds/subtracts. I plan to proceed by sending data which consist of Space Spartans samples which have been altered, to see what I can learn. Data Format - Unknown to me at this time. These should be based on the addressing modes of the micro, I suppose. Digital Filter - This is a 12-pole digital filter, consisting of 6 cascaded 2nd order stages. The excitation for the filter was either white noise or a series of impulses at the pitch frequency. I believe this filter is identical to the one in the SP0250 chip. The SP0250 data sheet and applications guide has further details. ---------------------------------------------------------------------------- The Analog Section I have traced out the low-pass filter section and regenerated a schematic for this here. It is a fifth-order elliptical filter implememented with GIC's. It was dubbed "the brickwall" for obvious reasons. (>120db attenuation in the stop band) I will be converting it to a digital filter for simulation purposes. ---------------------------------------------------------------------------- Voice Encoding This was actually a VERY involved process in the original cartridge development. Cartridge space was critical and so special candidate screening and software processing were done to insure intelligibility and small code space. I'm putting this off until the end. ---------------------------------------------------------------------------- [Image] ---------------------------------------------------------------------------- 2bits.simplenet.com ......Resources and tech stuff from Frank Palazzolo