Ir al contenido

Ricoh 2A03 y 2A07

De Wikipedia, la enciclopedia libre
Esta es una versión antigua de esta página, editada a las 03:22 10 may 2023 por Khiari (discusión · contribs.). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.
Ricoh 2A03 y 2A07
Información
Tipo modelo de circuito integrado
Desarrollador MOS Technology
Fabricante Ricoh
Datos técnicos
Frecuencia de reloj de CPU 1,79 MHz (NTSC)
1,66 MHz (PAL)
Conjunto de instrucciones MOS 6502

El Ricoh 2A03 o RP2A03 es una CPU de 8 bits, famosa por ser la escogida para equipar la videoconsola Nintendo Family Computer / Nintendo Entertainment System. Contiene un núcleo MOS Technology 6502 licenciado por Ricoh. Se diferencia de 6502 estándar en que sólo puede operar con enteros, se le añaden 22 registros mapeados en memoria que controlan generadores de sonido programables, una rudimentaria DMA y leían los mandos de juegos. Los equipos vendidos en zonas PAL (Europa y Australia, principalmente) usan las CPU Ricoh 2A07 o RP2A07, idénticos al 2A03, excepto porque usan un divisor diferente del reloj y una tabla de frecuencias de la CPU diferentes. En todos los casos vienen en un encapsulado DIP de 40 pines.

La CPU en NTSC funciona a una frecuencia de reloj de 1,79 MHz, mientras que su variante PAL funciona más lento, a una frecuencia de 1,66 MHz, con unos "ajustes" en el sonido para que no suene a una velocidad inferior que la versión americana y japonesa.

Historia

Cuando el ingeniero Masayuki Uemura estaba diseñando la videoconsola Famicom (como se llamaba a la NES en Japón) para Nintendo a principios de los años 80, acabó por decidirse por una CPU 6502 como procesador para este nuevo soporte.

Contactaron con muchos fabricantes de semiconductores, pero la mayoría rechazaron sus ofertas, ya que buscaban que alguien se fabricase realmente muy barato. Nintendo buscaba precios por los suelos, aunque a cambio prometía compras enormes. Finalmente, la empresa Ricoh, sin mucho trabajo en su división de semiconductores, aceptó la propuesta ofrecida por Nintendo, que no iba a pagar más de 2.000 yens por chip (lo que a Ricoh le pareció absurdamente bajo), pero prometía comprar tres millones de CPUs en dos años. Además, para que a Ricoh le fuese más rentable, hicieron ciertas restricciones al 6502 y añadieron otras cosas necesarias para el diseño final de la consola.

Aunque en Nintendo se preguntaron qué iban a hacer con tanto chip si la Famicom no tenía éxito, acabó siendo la videoconsola más vendida a lo largo de los años 80 y hasta mediados de los años 90.

La máquina arcade Unisystem VS (que puso en los salones de recreativas a Super Mario Bros y otras joyas de Nintendo), utiliza también la Ricoh 2A03 como CPU.

Generador de sonido del 2A03 (PSG)

El 2A03 posee un generador de sonido integrado que tiene 5 voces. Éstas son:

  • 2 canales de pulsos ajustables de onda cuadrada
  • 1 canal de onda triangular (usado generalmente para las notas graves y tambores)
  • 1 generador de ruido blanco (también se puede configurar para obtener ruido periódico, es decir, ruido tonal o en bucle)
  • 1 canal de reproducción de muestras de sonido basada en Modulación Delta (DMC) de 1 bit (también puede reproducir PCM de 7 bits sin comprimir activando la reproducción con el registro DMC_RAW)

El ciclo de las ondas de pulso se puede ajustar a valores de 12,5%, 25%, 50% y 75%.

Registros de memoria del 2A03

Al núcleo MOS 6502 se le agregan 22 registros de memoria o "mapeadores" adicionales que se usan para el generador de sonido, las muestras de sonido DMC, la lectura de los controles y la rudimentaria DMA on-die. Además Ricoh omite la funcionalidad de código binario decimal o BCD del 6502 para ahorrar espacio en el silicio.

$4000 SQ1_VOL Ajuste de ciclo y volumen para el canal de pulso 1
$4001 SQ1_SWEEP Registro del control de barrido para el canal de pulso 1
$4002 SQ1_LO Contador de byte bajo para el periodo del canal de pulso 1
$4003 SQ1_HI Contador de byte alto para el periodo y longitud para el canal de pulso 1
$4004 SQ2_VOL Ajuste de ciclo y volumen para el canal de pulso 2
$4005 SQ2_SWEEP Registro del control de barrido para el canal de pulso 2
$4006 SQ2_LO Contador de byte bajo para el periodo del canal de pulso 2
$4007 SQ2_HI Contador de byte alto para el periodo y longitud para el canal de pulso 2
$4008 TRI_LINEAR Contador lineal para el canal de onda triangular
$4009 N/U Sin usar, pero se puede acceder a él en bucles de limpieza de memoria
$400A TRI_LO Contador de byte bajo para el canal de onda triangular
$400B TRI_HI Contador de byte alto para el periodo y longitud del canal de onda triangular
$400C NOISE_VOL Control de volumen para el generador de ruido blanco
$400D N/U Sin usar, pero se puede acceder a él en bucles de limpieza de memoria
$400E NOISE_LO Forma del periodo y longitud para el generador de ruido blanco
$400F NOISE_HI Contador de longitud para el generador de ruido blanco
$4010 DMC_FREQ Modo para la reproducción y frecuencia de las muestras de sonido DMC
$4011 DMC_RAW Reproducción de PCM de 7 bits sin comprimir
$4012 DMC_START Inicio de la forma de onda de las muestras de sonido DMC, es la dirección: $C000 + $40*$xx
$4013 DMC_LEN Longitud de la forma de onda de las muestras de sonido es de $10 * $ xx + 1 bytes (128 * $ xx + 8 muestras)
$4014 OAM_DMA Escritura de copias en $xx de 256 bytes de lectura desde $xx00-$xxFF y escribir a OAM_DATA ($2004)
$4015 SND_CHN Usado para habilitar los canales de sonido y para el estado de los mismos
$4016 JOY1 Datos del mando 1
$4017 JOY2 Datos del mando 2 y controlador del contador de cuadros
$4018-$401F Funcionalidad de la APU y I/O están normalmente desactivadas

(N/U= No usado)

Fuente

Enlaces externos