SPC700

De Wikipedia, la enciclopedia libre
SPC700
Información
Tipo integrated circuit model
Fabricante Sony
Nintendo S-SMP. Un procesador de uso general (CPU) con núcleo basado en el procesador MOS 6502, es el encargado de ejecutar el código para la música del juego.

El SONY SPC700 o Nintendo S-SMP es el chip de sonido de 8 bits diseñado por Ken Kutaragi y usado en la videoconsola Super Nintendo Entertainment System (SNES) junto con un procesador digital de señal (DSP). El SPC700 y su DSP acompañante de 16 bits fueron desarrollados y fabricados por Sony, que más tarde entraría en el mercado de los videojuegos con su PlayStation. El S-DSP era muy avanzado para su época (1989) y en cierto modo puede decirse que rivalizaba con las tarjetas de sonido de síntesis mediante tabla de ondas.

Detalles técnicos[editar]

Dentro de la SNES el SPC700 está situado sobre el DSP, en el lado izquierdo del módulo de sonido. El chip contiene 64KB de RAM interna y funciona a 2,048 MHz. Tiene seis registros internos y puede ejecutar 256 opcodes. Los samples de sonido se almacenan en RAM formato comprimido (basado en 4-bit ADPCM, llamado Bit Rate Reduction, BRR, formato propietario). El conjunto de instrucciones del SPC700 es muy parecido al de la familia de procesadores 6502, pero incluye instrucciones adicionales, como XCN, que intercambian las porciones de 4 bits inferiores y superiores del acumulador de 8 bits, y una instrucción para multiplicar 8 por 8 bits en un resultado de 16.

SPC700[editar]

El SPC700 funciona de una manera bastante poco convencional para un procesador de sonido. La CPU principal de la SNES transfiere bloques de datos que contienen comandos y muestras de sonido a la memoria interna del SPC700. Estos comandos son programas en código máquina desarrollados para el SPC700 de forma similar a como se escriben los programas para los ordenadores convencionales. Como ello, el SPC700 puede considerarse un coprocesador dedicado al sonido en la SNES. El nombre del formato de sonido relacionado con la emulación .SPC procede del nombre de este procesador.


DSP[editar]

Nintendo S-DSP. El procesador digital de señales es el que en realidad genera el sonido. Existen 2 revisiones: la revisión de módulo desmontable y la revisión 'A', ésta, su diferencia es que viene montada sobre el circuito principal.
En revisiones posteriores, los procesadores de sonido (S-SMP y S-DSP) fueron unificados en uno solo.

El DSP acompañante del SPC700 funciona de forma parecida a las tarjetas de sonido modernas de síntesis mediante tabla de ondas, como por ejemplo la Sound Blaster Audigy. Es capaz de generar 8 voces simultáneas en cualquier tono y volumen. Soporta el panning de voces, el control del envolvente acústico, el eco con filtro (mediante un FIR programable de 8 términos) y el uso de ruido como fuente sonora (útil para ciertos efectos sonoros tales como el viento). Genera una salida de audio estéreo de 16 bits a una frecuencia de muestreo de 32 kHz. La comunicación entre el SPC700 y el DSP se realizan mediante E/S mapeada en memoria (MMIO). Debido al tipo de interpolación (Gaussian), la claridad del sonido se nota de menor calidad, muchos emuladores implementaron diferentes interpolaciones para mejorar considerablemente la calidad sonora.

RAM[editar]

La memoria RAM es accedida a 3.072 MHz mediante tres accesos, multiplexado entre el S-SMP y el S-DSP, un acceso y dos accesos, respectivamente. Esta ram es usada para almacenar el código del S-SMP y de la pila o stack, así como muestras de sonido y una tabla de punteros a éstos, y el buffer de eco para el S-DSP. Su tamaño es de 64KB.

Algunos desarrolladores enviaban bloques BRR a la RAM en medio de una reproducción, esto servía para "sobrepasar" el límite de 64KB de RAM, un ejemplo notable son las vocales de "Yume wa Owaranai" de Tales of Phantasia.

Resumen[editar]

  • Sonido estéreo
  • 16-bit, 32kHz
  • Síntesis de sonido basada en tablas de ondas comprimidas mediante el algoritmo BRR[1]
  • 8 Canales
  • Soporte para panning por canal
  • Modos de envolvente acústico o envelope: ADSR, Directo, Lineal (incrementar), Lineal (decrementar), Bent Line y Exponencial (decrementar)
  • Sample rate hasta 128kHz[1]
  • Ajuste de volumen general y de eco, incluida la capacidad de invertir la fase del sonido
  • Soporte de hasta 240 milisegundos de eco
  • Retroalimentación (feedback) de 99 a -100 por ciento
  • Filtro FIR para eco de 8 controles con valores soportados de 127 a -128
  • Modulación de tono (pitch mod)
  • Generador de ruido blanco de 0 Hz hasta 32 kHz

Misceláneo[editar]

Sonido envolvente[editar]

Además de las capacidades estéreo, el S-DSP soporta volúmenes en fase invertida (al igual que el filtro FIR), el cual sirve para enviar señal en un decodificador compatible con sonido envolvente (surround sound).[2]

Modulación de tono[editar]

La modulación de tono (pitch modulation) consiste en una forma muy primitiva de obtener síntesis de frecuencia modulada. Esta característica se puede usar en los siguientes canales: [3]

   Modulación de tono
         Canales
            7     6     5     4     3     2     1     0
         +-----+-----+-----+-----+-----+-----+-----+-----+
         |VOIC6|VOIC5|VOIC4|VOIC3|VOIC2|VOIC1|VOIC0|  -  |
         +-----+-----+-----+-----+-----+-----+-----+-----+

Como se puede observar, donde VOICn representa un canal, y n es el número del otro canal. Tome en cuenta que el canal 0 no se puede hacer este effecto. Su funcionamiento consiste en multiplicar el tono actual de un canal n por OUTX más uno del canal previo. Esto se traduce matemáticamente de la siguiente manera:

   Pm = p[n] * (1 + OUTX[n-1])

Donde Pm es modulación de tono, p es tono y n es el número del canal

Su uso consiste en usar dos canales:[4]

La muestra de sonido usada para el ejemplo de sonido. Su tamaño original es de 32 bytes.
  • El primer canal actuará como oscilador de baja/alta frecuencia según sea la frecuencia del tono.
  • Se le puede asignar arbitrariamente un tipo de onda (sea sinusoidal, cuadrada, triangular o una compleja)
  • Para cambiar la profundidad de la modulación, la ganancia (o ADSR) del canal como oscilador debe ajustarse. Tome en cuenta que no afecta el cambiar el volumen general del canal.
  • El segundo será el modulado.
  • Llevará la misma u otro tipo de onda, sea un instrumento o un pulso.
Síntesis de frecuencia modulada usando la característica "pitch modulation" del S-DSP.Todas las notas usan dos canales, uno sin sonido (oscilador) y el otro con sonido (modulado). El oscilador trabaja a una frecuencia entre 8 y 1000 Hz.* Las primeras ocho notas usan dos canales; el panorama del oscilador está hacia la izquierda (pan: 20/128), y se encuentra con sonido activado.* Las ocho siguientes usan las mismas configuraciones, salvo el panorama, está centrado (pan: 64/128).* Las ocho siguientes, el oscilador se encuentra sin sonido (Nótese el cambio del bajo).* La siguiente nota es una oscilación de tono (el oscilador no tiene sonido)* La posterior nota es otra oscilación de tono, parecido al de una nave espacial (el oscilador no tiene sonido).

Esto puede generar sonidos muy similares a los que pudieron los chips de FM aquella época (1989).[5]

Limitaciones[editar]

  • Cada canal usado para modulación de tono, requerirá dos canales como mínimo
  • No existe ajuste automático ni algún tipo de algoritmo para la síntesis
  • El sonido generado es muy similar, pero no mejor comparado con un verdadero chip de FM
  • El ajuste para la síntesis debe ser manual (a menos se controle por software), y llega ser la mayoría de las veces muy complicado

Referencias[editar]

  1. a b «SPC700 Reference». Archivado desde el original el 13 de febrero de 2015. Consultado el 13 de febrero de 2015.  Referencias sobre el SPC700, ver DSP Voice Register: P y Bit Rate Reduction (BRR) (en inglés)
  2. «Surround sound on SNES».  ZSNES Board (en inglés)
  3. «DSP Register: Pitch Modulation». Archivado desde el original el 29 de abril de 2015.  ekid.nintendev.com/snes (en inglés)
  4. «SNES Audio Hardware Info - Some FM synth».  NesDev.com (en inglés)
  5. «SNES Audio Hardware Info - "the S-DSP is an FM synthesizer"».  NesDev.com (en inglés)

Enlaces externos[editar]