Ricoh 2A03

RP2A07 la variante PAL del RP2A03

El Ricoh 2A03 o RP2A03 es una CPU de 8 bits, famosa por ser el escogido para equipar la videoconsola Nintendo Family Computer / Nintendo Entertainment System. Contiene un núcleo MOS Technology 6502 licenciado por Ricoh. Se diferencia de 6502 estandar en que sólo puede operar con enteros, se le añade 22 registros mapeados en memoria que controlan generadores de sonido programables, 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 mas 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 Masayuki Uemura estaba diseñando la NES, acabó por decidirse por una CPU 6502, barata. El 6502 no puede hacer todo el trabajo gráfico el solo, por lo que deciden incluir una PPU (Picture Processing Unit). Contactaron con muchos fabricantes de semiconductores, pero la mayoría rechazaron sus ofertas. Nintendo buscaba precios por los suelos, pero prometía compras enormes. La afortunada fue Ricoh, sin mucho trabajo en su división de semiconductores entonces. Nintendo no iba a pagar más de 2.000 yens por chip, lo que a Ricoh le pareció absurdamente bajo, pero prometió comprar 3.000.000 de CPUs en 2 años acaban con las dudas. Aunque en Nintendo se preguntaron que iban a hacer con tanto chip, acabó siendo la videoconsola más vendida de aquella época.

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 el cual tiene 5 voces, las cuales son:

  • 2 canales de pulsos ajustables de onda cuadrada
  • 1 Canal de onda triangular (usado para 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 reproduccion con el registro DMC_RAW)


El ciclo de las ondas de pulso se pueden ajustar entre 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 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 de el 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 de el 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 el 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 el 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 de el contador de cuadros
$4018-$401F Funcionalidad de la APU y I/O están normalmente desactivadas

(N/U= No usado)

Other Languages
العربية: ريكو 2A03
Deutsch: Ricoh 2A03
English: Ricoh 2A03
italiano: Ricoh 2A03
日本語: Ricoh 2A03
한국어: 리코 2A03
polski: Ricoh 2A03
русский: Ricoh 2A03
svenska: RP2A03