6502 vs 6510 Episodio 10 – Conectando una Memoria Static RAM

Continuamos este estudio comparativo del 6502 vs el 6510 esta vez conectando una memoria Static RAM del modelo 62256 que posee 32kb.

Vamos a estudiar cómo conectar esta memoria tanto a un 6510 con CIA 6526  como a un 6502 con VIA 6522, incluiremos todas las rutinas de assembler para poder probar la memoria, sus conexiones físicas y  timing de la memoria con el procesador, punto central de su funcionamiento.

La Memoria HM62256B

Esta memoria es una static ram, esto implica que los datos que esta posee no necesitan ser refrescados cada cierta cantidad de ciclos de reloj sino que los mismos se conservan mientras esta no pierda electricidad.

Su denominación de 256 refiere a sus 256Kbits disponibles, estos están organizados en 32768 entradas de 8bits cada una lo que conocemos normalmente como 32Kbytes.

PinOut

Este chip viene en formato DIP (Dual Inline Pins) de 28 pines y es muy parecido en su layout a la eeprom AT28C256 que vimos en un artículo anterior.

A14 – A0: Estos pines nos permiten seleccionar qué registro de ocho bits queremos acceder dentro de nuestra memoria, al ser 15 pines podemos direccionar 2ˆ15 = 32768 registros de 8 bits. Estos pines se conectan al bus de direccionamiento.

I/O 0 a I/O 7: Los pines de I/O es donde vamos a ver el contenido de cada registro previamente seleccionado para leer la memoria, o donde vamos a enviar los datos que tenemos para escribir la memoria. Estos pines se conectan al bus de datos.

VCC: En este pin es donde el chip espera una alimentación de +5Volts

GND: Este es el pin de referencia a tierra del chip

/WE: El pin de write enable al recibir una señal de low o 0 Volts permite grabar en los registros de la memoria. Como la estamos utilizando como una ROM conectamos este pin directamente a +5 Volts para que sea de sólo lectura. La barra / significa que este pin es active low con lo cual espera 0 Volts para activarse

/OE: El pin de output enable conecta o desconecta los pines de I/O del bus de datos. Si el pin está en +5 Volts la memoria se desconecta del bus de datos poniendo sus pines de datos en un estado de alta impedancia. La barra / significa que este pin es active low con lo cual espera 0 Volts para activarse

/CE: El pin de chip enable conecta o desconecta los pines del chip para una lectura o escritura trabajando en conjunto con /OE y /WE. Es active low con lo cual espera 0 Volts para activarse

Timing para una lectura

Cuando un procesador y una memoria necesitan comunicarse ya sea para lectura o escritura hay dos tiempos generales que tienen que ser compatibles: el tiempo en que la memoria responde y el tiempo que el procesador puede esperar. Para poder leer o escribir tenemos que realizar una combinación de 3 pines /WE /OE /CE. En el caso de una lectura WE debe estar en High y OE y CE en low, para una escritura los 3 pines deben estar en LOW.

Timing de la Memoria en una lectura

Para poder hacer una lectura de la memoria, primero el procesador debe poner en el address line o bus de direccionamiento la dirección  donde está el dato que quiere leer, esta dirección consiste en los unos y ceros o los highs y lows de los pines A15 a A0.

La memoria no tiene inmediatamente disponibles los datos elegidos sino que tarda en buscar el dato y en poner el mismo en el bus de datos con sus 8 bits representados por los pines D7 a D0 y tarda en que estos estén estables, que sean válidos y  que reflejen el valor interno en la memoria por lo que el procesador tiene que esperar un tiempo hasta que estos datos sean válidos y recién ahí leerlos, en el caso del datasheet del ejemplo 70ns como mínimo debe ser el tiempo de espera del procesador.

Hagamos el análisis paso por paso utilizando el siguiente diagrama.

Primero el procesador tiene que colocar los 16 bits del address line en forma correcta pero estos puede que no sean seteados al mismo tiempo o en algún orden específicos con lo que el bit 1 puede setearse luego el 15, luego el 12, etc. Tenemos que esperar hasta el punto donde comienza TRC o Read Cycle Time que es el momento donde el address bus tiene los 16 bits en forma correcta.

El procesador deberá esperar un tiempo tAA o Address Access Time, que es el tiempo para que los datos en el bus de datos sean válidos y con valores correctos. Cuando el tiempo tAA termina recién ahí los datos o bits o highs y lows que están en el bus son válidos y representan la dirección deseada.

Este tiempo  posee dos subcomponentes tACS o chip Select to access time que es el tiempo que tarda el chip en activarse cuando recibe una señal low en el pin de Chip Select y también tOE o Output Enable to Output Valid, qué es el tiempo que tarda en activarse los pines de output luego de recibir un low en el pin de Output enable y que estos pines reflejen el valor correcto del contenido de la memoria en el bus de datos..

¿Cómo sabemos cuánto puede tardar como máximo el chip en darnos datos válidos una vez que tenemos un address válido en el bus de direccionamiento? Con una tablita de tiempos de acceso disponible en el datasheet de cada chip.

Si vemos para el chip de la familia HB62256B si termina el mismo en -7 el tiempo máximo de address access time o tAA es de 70 nanosegundos, podemos deducir que es tiempo máximo de tACS el chip select to access time o lo que tarda en activarse el chip ya que este timer tarda 70 ns y el de tOE de Output enable to output valid solo tarda 40ns como máximo.

tAA = 70 ns

tACS = 70ns

tOE = 40ns

Otro tiempo importante que vamos a utilizar en el futuro es el tOH o el Output hold time from address change, este tiempo es cuánto los datos vamos a mantenerse como válidos desde que cambió el address en el bus de direccionamiento, este es de 5ns

tOH = 5ns

Ahora cómo sabemos si el procesador que utilizamos puede esperar 70 nanosegundos? Estudiando el diagrama de timing del mismo,

Timing del Procesador 6502 en una lectura

El siguiente es el diagrama de tiempos del procesador 6502 hecho por Western Design Center. El problema con este diagrama es que mezcla los tiempos de escritura y de lecturas al mismo gráfico por lo que construí un diagrama simplificado para poder entenderlos mejor.

Por otro lado la velocidad de cada uno de estos intervalos va a depender de a que voltaje nosotros manejemos el cpu, como estamos usando +5 Volts esa es la columna que utilizaremos. Estos voltajes nos van a dar un máximo de 14Mhz para correr nuestro CPU pero lo vamos a estar corriendo a 1Mhz.

El ciclo del Reloj

El primer tiempo que nos interesa saber es el de un ciclo completo de reloj, este está representado en el diagrama como PHI2 y se divide en tPWL y tPWH (Clock Pulse Width Low y High respectivamente). Al usar un reloj de 1Mhz vamos a tener disponibles 1000 nanosegundos para todo el ciclo completo de reloj.

(1)

tPWL va de 0ns a 500ns

tPWH va de 500ns a 1000ns

El mínimo de tiempos de estos intervalos podría ser de 35ns cada uno o sea 70ns de ciclo de reloj si lo corriéramos a 14Mhz pero sabemos que por lo menos necesitamos 70ns para que nuestra memoria nos de los datos con lo cual esta velocidad no es adecuada.

Las preguntas que debemos responder primero para ver si podemos esperar esos 70ns que tarda en acceder a los datos la memoria que estamos utilizando es cuando el procesador configura el address en sus pines y cuando r ealiza la lectura.

Estableciendo el Address en el Bus de Direccionamiento

El segundo tiempo que vamos a tener que estudiar es el tADS o Address Setup Time , es el tiempo que le toma al cpu estabilizar los highs y lows en los pines del bus de direcciones. Y el tercer tiempo es el tAH o Address Hold Time, por cuánto tiempo esos highs y lows son válidos en el bus de direcciones.

(2) tADS = 30ns

(3) tAHT = 10ns

El tADS comienza en el falling edge del comienzo del ciclo del reloj.

El tAHT se mantiene desde el falling edge (transición de High a Low) del final ciclo del reloj.

Leyendo los datos

El cuarto tiempo a estudiar es el tDSR o Data Setup Time, que es cuánto tiempo tardan en estabilizarse los highs y lows en el bus de datos y el quinto tiempo es el tDHR o data Hold read time o cuánto tiempo esos datos són válidos.

(4) tDSR = 10ns

(5) tDHR = 10ns

El tDSR termina desde el falling edge (transición de High a Low) del ciclo del reloj en ese falling edge es cuando ocurre la lectura.

El tDHR son por lo menos 10ns desde el momento de la lectura.

Tenemos que asegurarnos que la RAM esté dando datos válidos durante tDSR + tDHR. Tenemos que asegurarnos que la RAM esté dando datos válidos durante tDSR + tDHR.

Si hacemos un esquema podemos ver:

0ns    a   30ns necesitamos que el address sea estabilizado tADS

30ns  a   1010 ns el address el válido tAHT

990ns a 1010ns los datos tiene que ser válidos tDSR + tDHR

Con lo cual la ram tiene 990 – 30 = 960ns para poder dar los datos en el bus, pero como vimos la RAM sólo tarda 70ns como máximo para darnos los datos por lo que tenemos mucho tiempo disponible.

Pero por cuánto tiempo la RAM mantiene los datos válidos en el bus? Para esto está el timer tOH de la RAM que es de 5ns a partir de que cambia la dirección de la ram, pero la dirección cambia recién en el ns 1010 que es cuando expira el timer de address hold time del procesador lo que nos da unos 5ns extras para la lectura.

990 ns a 1015ns la RAM da valores de highs y lows válidos en el bus de datos

Por esto podemos hacer la lectura por que el procesador requiere de 10ns después del momento de la lectura y la RAM mantiene los datos válidos por 15ns

De forma similar a como hicimos este análisis podemos realizar lo mismo para la escritura de la memoria variando solo algunos valores de los parámetros.

Un gran lugar para poder ver alternativamente como funcionan los diagramas de tiempo del 6502 es este sitio donde se ve muy bien visualmente Visual Guide to 65xx CPU Timing 

Timing para una escritura

Con la información que ya tenemos de interpretar cómo se hace una lectura encaremos la escritura de datos en la memoria.

Timing de la Memoria en una escritura

Veamos este nuevo diagrama de tiempos para la escritura.

Y también los nuevos valores mínimos y máximos para estos parámetros

Este diagrama asume que el pin de OE output enable está fijo en Low y según la nota 4 la escritura se va a realizar cuando CS y WE ambos estén el Low.

Comienza el tiempo tWP o Write Pulse Width cuando el último pin entre WE y CS entren en low y dura hasta que el primero de ellos pase a High.

tWP = minimo de 50ns

Los datos deben ser válidos en el bus por lo menos desde tDW o Data Write time overlap y mantenerse válidos por un período tDH o Data Hold form write time

tDW = 30ns

tDh = 0ns

Con lo cual por lo menos 30ns antes de que WE o CS pasen a ser High los datos deben mantenerse como válidos.

Si analizamos lo que puede pasar, el bus de datos puede tener cualquier información errónea sin problemas y esos datos se escriben en la ram, pero por lo menos 30ns antes de que se termine la escritura los datos deben ser válidos ya que estos quedarán en la RAM, estos datos válidos pueden ser mantenidos por 0ns enel bus si queremos ya que ya han sido escritos ya que el mínimo de tDH es cero.

Timing del Procesador 6502 en una escritura

Veamos este nuevo diagrama de tiempos para la escritura.

Sabemos que los siguiente tiempos se cumplen debido a nuestro análisis anterior:

0ns    a   30ns necesitamos que el address sea estabilizado tADS

30ns  a   1010ns el address el válido tAH

1000 ns a 1010ns tDHR

Los datos se vuelven inválidos al final de tDHR que coincide con tAH y con un nuevo timer tDHW o Write Data Hold Time

tDHW = 10ns desde el falling edge fin del clock cycle

1000 ns a 1010ns tDHW

El write ocurre en el falling edge del final de clock cycle. Pero para que la escritura sea correcta los pines de CS o WE tienen que ser high antes de que el address, los datos o el write hold time sean inválidos.

Si conectamos el pin de chip select CS a cualquier de las address lines estaríamos en problemas ya que debemos asegurar que el pin CS sea high mientras todavía todos los pines de address son válidos y todos los pines de datos son válidos, pero no tenemos forma de poder apagar un pin antes que los otros asegurándonos que sea siempre así.

Lo mismo nos sucede con el pin de R/W del procesador no hay forma de garantizar que vaya a cambiar antes que los pines de address.

Con lo que nada nos asegura que CS o WR pasen a ser High (terminando la escritura) antes de que el address y los datos seán inválidos.

Para solucionar esto podemos hacer que el CS chip select pin sólo sea LOW durante el ciclo de pulso alto del reloj o tPWH de 500 a 1000 ns, de esta forma nos aseguraremos que el address bus tenga direcciones válidas y que unos nanosegundos tDW antes de apagarse el CS tenemos todavía datos válidos, ya que los hold timers de tAH y tDW nos mantendrían valores válidos en address y data bus respectivamente aún después de poner el High el pin de CS. En nuestro ejemplo serían 10ns extras.

Para lograr esto podemos conectar el pin a15 si lo usáramos para seleccionar nuestro pin de chip select conectado a través de dos compuertas nand de forma tal que solo en el pulso high del reloj y cuando el pin a15 sea cero el pin de la memoria de chip select reciba un cero o low.

Al agregar dos compuertas nand debemos sumar un tiempo más que el que tarda la compuerta en evaluar sus inputs y darnos un output, este tiempo se llama maximum propagation delay (tPHL).

En el caso de las compuertas que utilizamos este es de 25ns al usar 2 vamos a tener como máximo 50ns de delay, lo que implica que la señal de chip select va a ir a low 50 ns después de que si no usáramos las compuertas, en este setup ese tiempo no influye ya que tenemos 960ns disponibles con el address valid antes de que los datos estén válidos (llendo de los 30ns a los 990ns) esto nos llevaría sólo al intervalo 80ns a 990ns no implica problema alguno.

Timing en el procesador 6510

El timing en el 6510 es bastante más lento que en el 6502 y eso debemos tomarlo en cuenta, observemos estos valores y diagramas del datasheet original, el primer diagrama es de lectura y el segundo tiempos de escritura.

También tenemos algunos tiempos diferentes que los del 6502 más moderno

Así por ejemplo podemos observar el timer tADS o Address Setup Time el cual tarda 300ns en lugar de los 30ns del 6502 moderno. Si tuviéramos que hacer la cuenta con los tiempos para nuestra memoria ahora deberíamos comenzar así:

tADS = 300ms

tAH = 10ms

tDHR=tHR=10

0ns    a   300ns necesitamos que el address sea estabilizado tADS

300ns  a   1010ns el address el válido tAH

1000 ns a 1010ns tDHR

Y nuestra RAM muestra datos válidos desde

(tADS+tAA) a (tAH+tOE) = 300ns+70ns a 1010ns + 5ns

370ns a 1015ns la RAM da valores de highs y lows válidos en el bus de datos

Si nos referimos al manual de Hardware de la línea de procesadores 6500 él mismo nos dice que a 1Mhz el address está estable. sí o sí,  300 nano segundos después de que comienza la fase uno y los datos deben estar estables al menos 100 nanosegundos antes de que termine la fase dos de nuestro ciclo de reloj. Esto nos da 575 ns  para poner los datos en el bus de datos.

Y podemos observar los diagramas para timings de Read y Write respectivamente.

Read Timing Diagram

Write Timing Diagram

Cómo funciona en el Commodore 64

En nuestra querida Commodore 64 no estamos usando una memoria estática como la de este empleo si no que es dynamic ram, esta misma debe ser refrescada constantemente de lo que se encarga el chip de video VIC2. Esta memoria se selecciona por filas y columnas utilizando las señales de RAS y CAS.

Tampoco tenemos un sólo chip sino 8 chips cada uno de 64536 entradas y 1 bit de datos en cada entrada, con lo que si queremos representar un byte necesitamos los 8 chips y 1 bit de cada uno de ello, de ahí que cuando se rompe un chip de ram nada funciona ya que afecta al contenido de un bit en cada posición de la RAM.

Estudio visual

Para poder estudiar visualmente cómo conectar una ram estática y programarla  les dejo esta video que complementa al artículo.

RAM con 6510/CIA y 6502/VIA – 6502 vs 6510 Parte 10

Referencias

A continuación les dejo algunos links donde profundizar el tema:

WebSite OsoLabs 

VIDEOS

Video de la serie 6502 vs 6510 Parte 10 – RAM

RAM con 6510/CIA y 6502/VIA – 6502 vs 6510 Parte 10

Aquí tiene acceso a toda la serie:

6502 vs 6510 estudio detallado y comparación 

PAPERS

W65C02S 8–bit Microprocessor 

6510 MICROPROCESSOR WITH I/O 

6502 Instruction Set 

Visual Guide to 65xx CPU Timing 

HM62256B Series 

MOS 6500 Family Hardware Manual

Y como siempre la serie de Ben Eater del 6502

Build a 6502 computer | Ben Eater 

Todos los ejemplos de código de los videos los pueden encontrar en:

https://github.com/osolabstech/6502_vs_6510

Mozo, hay un Huevo de Pascua en mi ordenador!

Algunos de los easter eggs mas famosos, revisitados en esta entrega en el dia de pascuas.

La película Ready Player One (2018) dirigida por Steven Spilberg y basada en el libro homónimo de Ernest Cline popularizó el ya ultra conocido (gracias a internet) “primer easter egg (huevo de pascua) de la historia”. De la historia de los videojuegos, aclaremos. Y también aclaremos que eso es lo que creemos, solo hasta que aparezca uno anterior.

Cuenta la historia que Atari era reacia a dar a conocer los nombres de los programadores, artistas y diseñadores de sus videojuegos que por aquel entonces se publicaban para sus sistemas, en este caso para el Atari VCS/2600. Lo cual tenía a estos personajes algo disconformes. Así fue que en un acto de rebeldía, en el juego Adventure (1979), si el jugador hacía una cierta serie de acciones aparecería en pantalla la leyenda”Created by Warren Robinet”, en clara declaración de autoría e inmortalizando un nombre que de otra forma, hubiese quedado como uno más del montón.

Hay que entender el contexto, claro. No es que Atari fuera un explotador tampoco. Simplemente, la industria aún estaba en pañales. Y “el Atari” era, de alguna manera, considerado un juguete. Se vendía en los mismos mostradores que los juegos electrónicos, y las máquinas de pong hogareñas. Entonces los cartuchos de juegos eran meros accesorios que uno podía comprar (o pedirle a Santa) para cambiar el juego de la consola. Un gran avance sobre la generación anterior (las maquinas de Pong), que solo tenían un juego (o variantes de esta) y la cosa ya se estaba poniendo aburrida. Fairchild ya lo había hecho un año antes, pero la idea estaba en el aire. Y bajo esa lógica, así como Mattel no publicaba los accesorios de Barbie con el nombre de sus diseñadores, ¿porque lo haría Atari o quien fuese con sus cartuchos? “Sí, lo hizo un ingeniero. Un empleado. Pero te lo vende Atari”. Desde el punto de vista de la empresa, daba igual quién fabricaba qué parte.

Pero sucede que a diferencia del caso de Barbie, los juegos terminaron siendo lo más importante de la consola. Y si le sumamos el hecho que la VCS/2600, debido a sus limitaciones, era extremadamente difícil de programar, estos tipos era Rockstars. Invaluables y… mal pagos. Bueno, según ellos. Artistas. Así que no es de extrañar esa necesidad de querer firmar la obra.

Vamos a repasar algunos easter eggs fomosos que tal vez ya nuestros lectores conozcan, o tal vez no. En cualquier caso, siempre es divertido encender alguna de estas máquinas de 40 años y ver que todavía siguen ahí. Y esto las hace un poquito mas humanas… ¿no les parece?

Microsoft!

Cuenta la historia que Jack Tramiel, fundador de Commodore, en una maniobra (y canchereada a lo “che pibe”) le dijo a Bill Gates “yo ya me casé una vez” cuando éste le propuso la idea de que el interprete BASIC que le había vendido para sus nuevas microcomputadoras PET lo usaran bajo el modelo de licencias. Pero Jack ya había pagado una vez y no quería atarse a nadie. Bill entonces, previendo un posible juicio donde tuviese que demostrar autoría, dejó escondido dentro del código de su interprete la palabra “Microsoft!”. El comando mágico es

WAIT 6502,x

…donde X es la cantidad de veces que se escribe.

Claro que luego los ingenieros de Commodore lo descubrieron (Bill no se contuvo y lo escribió en una CES…) y lo eliminaron; pero si aún tienen acceso a una de las primeras PET, Billy sigue saliéndose con la suya.

Corolario: cuando Commodore necesitó un nuevo BASIC para la flamante y pronto a estrenarse Amiga… bueno digamos que por eso es que en la pantalla de la contemporánea C128 tuvieron que poner “BASIC 7.0 (c)1977 Microsoft Corp.” Pero Jack ya no estaba.

Software y Herdware

Ya que mencionamos la Commodore 128, los ingenieros que participaron en su desarrollo también quisieron dejar su marca. Bueno. Es que se había puesto de moda. Dentro de los gabinetes de las “súper avanzadas” Apple Macintosh (1984) y Commodore Amiga (1985) podemos ver inmortalizadas en el plástico las firma de los artistas que las crearon. Cada plataforma que salia al mercado era un sistema completamente nuevo al cual había que inventarle todo, esto requería de trabajo en equipo. Y mucho esfuerzo. Así que había que dejar la huella.

El comando mágico es entonces:

SYS 32800,123,45,6

… y aquí podemos ver quienes fueron los encargados del Software y quienes del Hardware o “herdware”, juego de palabras porque Bill Herd fue el encargado de liderar el equipo.

Pero ya lo habían hecho antes también. Si en la Commodore 16, Commodore 116 o Commodore Plus/4 (son básicamente la misma maquina en diferentes configuraciones) escribimos:

SYS 52651

… aparecerán los nombres de los involucrados.

Rebeldes

Como vimos al principio, los Easter Eggs no son solo una manera de firmar la obra. Sino también pretenden dejar un mensaje. A veces menos y a veces más explicito.

Terminando este artículo (que podría volverse infinito), me pareció muy emblemático el caso de la Amiga 500 (1987).

Commodore era una empresa que tras la renuncia de Jack Tramiel se volvió algo caótica. Cuando los ingenieros terminaron el desarrollo del Amiga, tenían en sus manos la computadora de consumo masivo (léase “hogareña” o “personal”) más poderosa del momento. Pero fue un fracaso en ventas, principalmente porque la gente de Marketing (al menos la gente de marketing de USA, aclaremos), no supo venderla. Eran áreas que estaban muy desconectadas entre si, lo que trajo mucha rivalidad interna y frustración en los desarrolladores.

Así que para la salida de la Amiga 500 nuestros enojados amigos dejaron en ROM (Kickstart 1.2) lo siguiente: Al presionar ambas teclas ALT, ambas teclas SHIFT, y las teclas de función obtenemos los siguientes mensajes en la barra de menu:

… + F1 : “System Software: Carl, Neil & Kodiak”

… + F2: “Graphics Software: Dale, Bart, Jim & :RJ:

… + F3: “QA: Jon, Bruce, Stan, Kim & Jerry

… + F4: “LG Support: Caryn, Dave, Victor, Terry, Cheryl & Nancy”

… + F5: “CBM Software: Andy, Barry, Dave & Eric”

… + F6: “Pics: Sheryl & Jack”

… + F7: “Docs: Rick, Mitch, Peggy & Rob”

… + F8: “Chips: Jay, Akio, Glenn, Edwin, Mark & Dave”

… + F9: “HW: Dave, Bill, ChrisR & Josh”

… + F10: “Me Made Amiga, They fucked it up.”

Wow.

Cuando Commodore descubrió ese ultimo, imagínense que no les resultó nada gracioso, porque si bien la combinación de teclas es algo … digamos … complicada, no es tan difícil que se dé, así que pidieron que se remueva.

Pero lejos de hacerlo, solo lo escondieron más. En las siguientes revisiones del ROM, con F10 podíamos leer: “Moral Support: Joe Pillow & The Dancing Fools” (la explicación de estos personajes requiere un artículo aparte)

Pero si presionamos la combinación antes citada con F1 y quitamos el diskette del drive interno, aparecerá el mensaje “The Amiga, Born a Champion”.

Pero esto no es todo. Si luego, sin soltar nada, presionamos el botón izquierdo del mouse y volvemos a introducir el disquette, vuelve a aparecer “We made Amiga…”

Los Chiches de la Commodore 64 – Ep 1 – El Reset Jabonera

En esta ocasión vamos a estudiar a un gran amigo que nos dejó excelentes recuerdos a la hora de obtener vidas infinitas en nuestros videojuegos, El Reset o Jabonera.

Vamos a estudiar que hacía, como funciona por dentro, que circuitos tenía y cómo lograr poner vidas infinitas en alguno de nuestros videojuegos favoritos.

Qué es el reset

El reset es un dispositivo que nos dejaba llamar al circuito de reset del procesador 6510 sin tener que apagar el mismo y sin la necesidad de borrar la memoria y comenzar desde cero. De esta forma podemos modificar posiciones de memoria con un programa cargado en la misma.

Su forma más típica es la de un cartucho blanco con un botón rojo que se conecta al puerto de usuario.

El puerto de usuario posee el siguiente pinout

Estamos interesados en dos pines específicos el pin 12 de ground o tierra que nos va a poder dar valores LOW o cero y el PIN 3 o Reset. Algunos diseños también usan el pin 1, el pin N o el pin A como ground.

El  PIN 3 está conectado a través del PCB del Commodore 64 directamente con el Pin 40 o de Reset del Procesador 6510. El Botón de reset activa el reset del procesador.

Así se ve la conexión de ambos resaltada en azul donde vemos la conexión del Pin 3 del puerto de usuario al pin 40 del procesador 6510. También existe otro modelo de reset que está conecta al puerto serial y hasta puede estar conectado en la disquetera.

La línea de reset se mantiene en High cercano a los 5 Volts gracias a una resistencia de 1Kilo ohms que conecta la línea de reset con los 5 Volts del mother, en el diagrama R36.

Cómo funciona el reset internamente

El botón de reset internamente es un circuito que conecta el pin 3 de reset al pin 12 de ground a través de un botón de push que se encuentra normalmente abierto, al presionarlo y unirlo al pin 12 de ground hace que el pin 3 del user port conectado al pin 40 del procesador reciba un voltaje de low (menor a 0,4 Volts).

En esta foto podemos ver el pin 1 unido al pin 3 (recordar que una alternativa de pin de grund era el uno)  y un botón para reset conectados a un placa que expande el puerto de usuario.

En nuestras latitudes (33 grados sur) hemos encontrado directamente cables soldados al botón y a los dos pines del user port de la mother lo que no solemos recomendar.

En nuestros pagos esta es la típica jabonera a la que estamos acostumbrados, la que conectamos al User port.

La misma posee un botón conectado a los pines 3 como reset y 12 como Ground a través de dos alambres.

Si medimos con un osciloscopio cada vez que presionamos el reset vemos como la línea del reset conectada al pin 3 baja a 0 volts. En la imagen el probe o punta de testeo del osciloscopio está conectado al pin 3 de reset y el cable de ground al pin 12.

Al recibir un low en el pin 40 del procesador se activa la rutina de reset del 6510 que en este caso va hasta la posición de memoria $FFFC y $FFFD y se fija que dirección de memoria está aquí adentro y va a ejecutar ese programa.

En el caso de la Commodore 64 va a la rutina que está en la posición $FCE2 y ejecuta el siguiente programa:

Esta rutina inicializa la commodore sin borrar la memoria:

  • Primero carga el valor $FF al registro X para luego configurar el stack pointer,
  • Deshabilita las interrupciones prendiendo el flag de interrupciones,
  • Configura el stack pointer en FF dejándole listo en $01FF,,
  • Borra el flag de modo decimal del procesador,
  • Se fija si existe algún cartucho con autostart y si existe este lo ejecuta (a partir de la posición $8000),
  • Si no había cartucho llama a las rutinas de inicialización IOINIT (inicialización de dispositivos),, RAMTAS (inicilaiza y testea la RAM), RESTOR (configura los vectores como ser también el de reset $FFFCy $FFFD),  y por último CINT que inicializa la pantalla,,
  • Limpia el flag de interrupciones habilitándolas nuevamente y
  • Arranca el programa de Basic a través de la posición de memoria $A000.

Finalmente vemos que nos deja en el prompt de basic pero con el programa que estuviera en memoria a la hora de pulsar el botón de reset todavía cargado en la misma.

¿Cómo lo usamos?

Primero cargamos un programa a memoria desde disco o cassette y ni bien este terminó de cargar pulsamos el botón de reset.

Si el programa que había en memoria es un programa en basic debemos antes de usarlo restaurar los punteros al código y memoria del mismo. Esto se realiza con los siguientes comandos.

(pO = p [Shift] o; pE = p [Shift] e) estas son las abreviaturas de poke para po y peek para pe

pO2050,8:sys42291:pO46,(pE(35)-pE(781)>253):pO45,pE(781)+2and255:clr

Luego de esto podemos correr el programa Basic, listarlo con LIST o grabarlo a disco.

Si lo que tenemos es un programa en código máquina, como por ejemplo un juego, podemos verlo con un monitor de código máquina o por si ejemplo si tenemos el wonderboy y queremos ponerle como truco vidas infinitas tipeamos los siguientes comandos desde el basic.

POKE 2676,238

SYS 2112

El comando Poke modifica la posición de memoria de las vidas y el comando SYS es una llamada a ejecutar el programa que está en la dirección 2112 que es el comienzo del juego.

Conclusión

Y de esta forma funciona nuestra querida Jabonera que tanto hemos usado para poder interrumpir alguno que otro videojuego y ahora sí ,con vidas infinitas, poder terminarlo. Un circuito muy simple y uno de nuestros clásicos chiches de Commodore.

Estudio visual

Para poder estudiar visualmente cómo funciona el Reset Jabonera, les dejo este video que complementa al artículo.

Referencias

A continuación les dejo algunos links donde profundizar el tema:

VIDEOS

El Reset Jabonera – Lo Chiches de la Commodore 64 Parte 1

Aquí tiene acceso a toda la serie de videos:

Los Chiches de La Commodore 

Artículos

Aquí encuentran todos los Artículos sobre Los Chiches de la Commodore:

PAPERS

ROM de Commodore 64 comentada 

Mapping the Commodore 64 

6510 MICROPROCESSOR WITH I/O 

Esquema del Mother parte Izquierda Commodore 64

Esquema del Mother parte Derecha Commodore 64 

Reset switch 

Wonder Boy Cheats, Codes, and Secrets for Commodore 64 – GameFAQs 

Todos los ejemplos de código de los videos los pueden encontrar en:

https://github.com/osolabstech/loschiches

Los Chiches de la Commodore 64 – Ep Cero – Introducción

 ¡Bienvenidos! Estamos empezando una nueva serie llamada Los Chiches de la Commodore 64. Nuestra querida Commodore nos dio muchas alegrías pero ella no podría haber hecho todo sola, por eso, siempre se valió de algunos Chiches.

En esta nueva serie vamos a estudiar cuáles son esos chiches, como funcionan por dentro y como usarlos.

Qué son los Chiches

Los Chiches son todos aquellos dispositivos clásicos y modernos que nos ayudan a usar la Commodore como por ejemplo la Famosa Jabonera de Reset, el sd2iec, los joysticks, el lápiz óptico, los adaptadores para el mouse, los cartuchos, los death test, las expansiones de memoria, módems tradicionales, modem wifi. Y podría seguir mucho tiempo más.

Siempre fueron un pequeño misterio cómo funcionan por dentro, de qué circuitos de la máquina se valen y sobre todo ¡Cómo se usan! ¡Más de uno tiene alguna función oculta que todavía al día de hoy no descubrimos!.

Qué vamos a ver

En este viaje vamos a estudiar:

Nuevos dispositivos de entrada salida como ser:

  • Adaptadores VGA como el Apollo 64+.
  • Sd2iec para conectar una sd card a tu Commodore.
  • Pi1541 para tener una 1541 con sdcard que respete todos los vericuetos e idiosincrasias de nuestra querida 1541.
  • El clásico Sánguche (leer con voz de yo quiero un sangucheee) S-Video  a RGB a HDMI.

Dispositivos modernísimos como ser:

  • El cartucho Ultimate II+, una gran navaja suiza.
  • Modem wifi para acceder a una bbs a través de Internet.
  • VersaCart para poder armar tu propio cartucho.
  • La Ram Expansion Unit (REU)  a través de una raspberry pi.
  • Joysticks modernos con microswitches.
  • IRQHack.

Dispositivos Clásicos como ser:

  • La Jabonera de Reset.
  • El cartucho CPM.
  • El clásico modem de Commodore.
  • La REU de ampliación de memoria 1750.
  • Joystick Colossus.
  • Turbo Cartridge.
  • FastLoad.

No te preocupes si no entendiste ni la mitad de los acrónimos, esta serie es para vos.

Bienvenidos

En fin tenemos para divertirnos un buen rato y aprender cada día más de nuestra querida Commodore 64. Así que para todos los que siempre quisieron saber cómo funcionan esos maravillosos chiches que usa nuestra Commodore, así como para los que recién los están descubriendo ahora,  les pido que me acompañen en esta nueva aventura.

Saludos

Carlinho de OsoLabs

En Video

Aquí puede encontrar el video Introductorio para la nueva serie.

Los Chiches De la Commodore – Episodio 0 – Bienvenidos!! 

Kartings y gaming: más allá de Mario Kart

¿Cómo comenzó la revolución de las carreras de kartings? Quizás haya sido en 1992 con Super Mario Kart de Nintendo, aunque otros apuntan a que inició antes, con el clásico de Atari de 1982, Pole Position, o incluso con Crashing Race, un juego de 1976 de Taito. En esta nota, un repaso por los orígenes y la historia de los “karting games” más importantes.

***

El loco, loco mundo de los kartings

Ningún género de videojuegos genera más pasiones y enemistades como el de kartings, también llamado “mascot racers”. En este tipo de juegos, los conductores se atacan entre sí mientras corren, con armas y power-ups que pueden recoger en las pistas, haciendo que todo se vuelva muchísimo más caótico, aleatorio y entretenido.

A menudo esas pistas también están llenas de obstáculos. Como resultado, conducir no se trata sólo de hacer giros cerrados y pisar fuerte en las rectas, sino también de evitar trampas y disparos, mientras te alineás contra los corredores enemigos para usar tu propio arsenal.

La mayoría de estos juegos utilizan franquicias existentes, normalmente videojuegos que comenzaron en otros géneros. El caso de estudio más claro es el de Mario Kart, que nació como un spin-off de la saga de Mario.

Trailer original de Super Mario Kart (1992)

Apareciendo en la Super Nintendo en 1992, la serie ha tenido tanto éxito que tenemos versiones en todas las consolas y dispositivos portátiles de Nintendo posteriores, con al menos una entrega, con la excepción de Virtual Boy y Game Boy Color (los Mario Karts portátiles comenzaron a aparecer recién con la Game Boy Advance).

Actualmente existen más de 15 entregas de Mario Kart, siendo la más reciente el Mario Kart Live: Home Circuit (2020) para la Nintendo Switch. Una versión de realidad aumentada que utiliza coches que se conectan de forma inalámbrica a la consola, lo que permite a los jugadores experimentar una carrera de Mario Kart como si estuviera sucediendo en su propio living.

Crashing Race y el comienzo de una era

Pero vayamos un poquito más para atrás en el tiempo. Si bien todos los juegos de carreras de karts se remontan, por supuesto, a los inicios de los juegos de carreras en general, la primera aparición del combate como una mecánica de juego fue en el arcade de Taito de 1976, Crashing Race.

Los detalles son escasos, pero parece haber sido una carrera de dos jugadores para eliminar tantos otros autos como fuera posible.

Los juegos de carreras de arriba hacia abajo con peligros en la pista, power-ups temporales, misiles y/o diseños de pista más inventivos, como Super Cars (1990), Turbo Kart Racer (1991) y Micro Machines (1991), también pueden haber sido una influencia importante.

Micro Machines gameplay (PC, 1991)

Incluso antes que ese trío, Pole Position (1982) de Namco no tuvo combate, pero sí fue relevante porque inspiró al juego de Super Nintendo F-Zero (1990), el primero en presentar al mundo el famoso “Modo 7”, una característica de hardware que escala y rota rápidamente sprites 2D (con transformaciones afines) para dar la ilusión de pistas 3D.

Después del éxito de F-Zero, Nintendo centró su atención en un juego de carreras para dos jugadores. El problema era que la Super Nintendo no podía manejar las altísimas velocidades del F-Zero en un juego multijugador que utilizara el Modo 7, por lo que utilizó kartings en lugar de autos de carreras futuristas.

Trailer original para el F-Zero de la SNES

Uno de los primeros prototipos tenía solo un elemento: se podían usar latas de aceite para hacer que el otro conductor hiciera un trompo. Luego, el equipo decidió poner a Mario en uno de los karts… y así siguió un juego de carreras con temática de Mario.

La llegada de Super Mario Kart

Al combinar imaginativamente los típicos elementos de los plataformeros (potenciadores, monedas, obstáculos que evitar, vidas limitadas, enemigos que intentan matarte) con los de los juegos de carreras, el equipo creativo termino por crear un género nuevo.

Chicos, Super Mario Kart (1992) no se parecía a nada que hubiésemos visto antes. Hoy se ve bastante viejuno, pero fue una revolución absoluta en su momento. Podías saltar a través de abismos, quedar aplastado bajo un golpe en el Castillo de Bowser y usar una gran variedad de potenciadores.

También había un emocionante modo de batalla uno a uno y una pista psicodélica infame (y endemoniadamente difícil) llamada Rainbow Road, que se convirtió en una estampa de la franquicia.

Quien sea que esté manejando, ya es una leyenda…

Por supuesto, como suele ocurrir con todos los juegos que definen un género, Mario Kart fue copiado hasta el harzato. El primer vivo fue Sega, sacando Sonic Drift para la Game Gear, que no ofrecía nada nuevo más allá de la posibilidad de jugar en una pantalla portátil.

Ubisoft, ni lento ni perezoso, sacó Street Racer para la SNES en 1994. El juego superaba técnicamente a todo lo que se hubiera visto hasta ese momento e incorporaba un modo adicional que funcionó como una suerte de precursor de Rocket League en el que competías para meter una pelota de fútbol en un arco.

Karts… karts everywhere!

El ataque de los clones no se detuvo ahí. Miracle Designs lanzó Atari Karts (1995) en la desafortunada consola Atari Jaguar. Apogee (famosa por Duke Nukem) publicó el adorable Wacky Wheels que yo amaba de chico, un juego de 1994 para DOS con gráficos y diseño que a primera vista parecían sacados directamente de Super Mario Kart.

Ninguno de estos clones tuvo un impacto real en la industria, por lo que le correspondió a Nintendo encontrar una forma interesante de hacer avanzar el floreciente género. Entonces entró a la competencia Mario Kart 64 (1996), una increíble secuela que se sigue manteniendo intacta hasta el día de hoy.

Es cierto que los diseños de los cursos a menudo parecían demostraciones técnicas. El nivel del desierto tiene a un tren que lo atraviesa, por ejemplo, pero todo el resto del nivel está medio vacío. Tenemos que recordar que, para ese momento, el 3D aún estaba en pañales.

Mario Kart 64 y el nivel del desierto

Lo que no le podemos negar a Mario Kart 64 es el factor diversión. La Nintendo 64 se destacó por sus excelentes propuestas para cuatro jugadores. Y, en este sentido, meter carreritas en modo multijugador era tremendamente divertido.

Kartings y aventuras con Diddy

Los talentosos muchachos de Rare pronto le demostraron a Nintendo cómo evolucionar realmente al género: Diddy Kong Racing (1997) no fue un simple spin-off de Donkey Kong Country; sigue siendo, hasta el día de hoy, uno de los mejores exponentes del género.

Mientras que Mario Kart se deleitaba con la suerte y el caos, DKR era más un juego de habilidad y estrategia que incluía un muy copado modo aventura para uno o dos jugadores. Y, lo que es todavía más memorable, ofrecía la posibilidad de elegir entre tres tipos de vehículos.

Algunas pistas requerían un vehículo específico, pero la mayoría se podían abordar en el automóvil, avión o aerodeslizador que uno eligiera, y las tácticas, rutas y posibles atajos cambiaban en consecuencia. ¡Ningún otro juego similar ha desafiado las convenciones del género con tanta audacia!

Trailer promocional del Diddy Kong Racing para la N64

El género se llenó de propuestas muy rápidamente con el cambio de siglo. ¿Me creen si les digo que más de veinte juegos de kartings aparecieron en todas las plataformas entre 1999 y 2001?  La mayoría eran malardos, genéricos y súper olvidables: teníamos el del Pájaro Loco, Mickey Mouse, los Looney Tunes, South Park, los Muppets, los personajes de Nickelodeon, etc.

La mayoría de ellos eran terribles y se manejaban peor que un oxidado carrito de compras. Sólo uno logró impulsar realmente al género. ¿Quién habría dicho que el Crash Team Racing (1999), spin-off de Crash Bandicoot de Naughty Dog, sería tan bueno?

Crash Team Racing: el único héroe en esta historia

CTR se manejaba perfecto y se veía mejor todavía. La PlayStation tuvo finalmente un buen juego para competir con Mario Kart 64. En la opinión de este humilde servidor, Crash Team Racing es incluso mejor.

El juego de kartings de Crash tomó prestado el modo aventura de Diddy Kong Racing para contar una historia muy tonta sobre cómo salvar al mundo de un extraterrestre que quería convertir la Tierra en un estacionamiento, pero presentó un sistema de deslizamiento mucho más sofisticado.

CTR en la escena competitiva del speedrunning…

El gaming mobile y el futuro de los kartings

Por otro lado, el gaming mobile también tuvo sus exponentes. El primer juego de kartings destacado que llegó a los teléfonos es sorprendentemente anterior al iPhone. MGS Karting fue lanzado en 2002 para los Nokia Serie 60. Tenía gráficos 3D simples pero atractivos, varios corredores seleccionables, una docena de pistas, 10 potenciadores, multijugador Bluetooth y hasta modos de torneo y contrarreloj.

Mientras tanto, en las tierras de Nintendo, Mario Kart 7 (2011) puso la serie en 3D estereoscópico e introdujo vehículos transformables. A mitad de una carrera, si conducías por una rampa especial, tu karting se metamorfoseaba en un planeador o en un vehículo submarino durante un breve período.

También podías construir tu propio vehículo a partir de diferentes partes, una característica que se vio por primera vez en el olvidado (pero genial) Lego Racers de 1999.

Gameplay del Lego Racers

Sin embargo, su característica más fuerte fue un regreso concentrado a pistas estrechas y relativamente pocos rivales en la pista, lo que ayudó a devolverle la precisión al juego, que era la piedra angular del Mario Kart original.

Palabras finales

Más allá de estos títulos mencionados, ya no hay mucho más para decir sobre los videojuegos de kartings. El desarrollo de consolas es demasiado caro hoy en día para que se justifiquen las propuestas genéricas.

Sin embargo, todavía hay un lugarcito para el género, como lo demuestra el éxito de Mario Kart 8. Todavía sigue siendo el juego de la saga más vendido y ofrece mucha diversión a pesar de su continua dependencia en la suerte.

¿Y ustedes? ¿Cuál es su juego de kartings favorito? Y lo que es más importante: ¿se van a animar al primero torneo de Mario Kart 64 que propone Espacio TEC?

¡Nos leemos!

***

Si les gustó esta nota, recomienden a sus amigos. Y sino les gustó, le avisan a sus enemigos. ¡Recuerden que pueden apoyar a Espacio TEC subscribiéndose al Club Pixel o aportando con un cafecito!

Luciano “It´s a me” Sívori

Podés seguirme por en Instagram y en Facebook. También tengo este blog de vicios personales.

C64 a Fondo – 6502 vs 6510 Episodio 9 – 6502 con Display LCD

Continuamos este estudio comparativo del 6502 vs el 6510 conectando un LCD de 16 caracteres x 2 líneas y programándolo con un mensaje. Vamos a estudiar cómo conectar un VIA 6522 y un CIA 6526 al lcd HD4470U de Hitachi y utilizando nuestro 6502 y nuestro 6510 mostrar el texto “OsoLabs” en el display en dos maquetas breadboard simultáneas.

El LCD Hitachi HD44780U

Nuestro principal display es el LCD de Hitachi el mismo posee el siguiente diagrama esquemático.

Este LCD tiene 16 caracteres que se pueden mostrar en dos líneas y cada carácter puede ser de 5×8 o 5×10 puntos. Posee internamente el dibujo o font de varios tipos de caracteres que se eligen con valores correspondientes mayormente al ASCII. Estos caracteres incluyen el alfabeto tradicional, caracteres japoneses y símbolos. El LCD puede ser controlado por un procesador de 4 bits o uno de 8 bits, nosotros lo utilizaremos en modo 8 bits por estar usando la línea 6502/6510.

En cuanto a velocidad es compatible con un bus de datos de hasta 2Mhz, nosotros vamos a estar utilizando hasta 1Mhz el máximo de velocidad de nuestro 6510.

PinOut del LCD

El siguiente esquema muestra y explica el pin-out

VSS (Ground): conexión a tierra de nuestro LCD

VDD: conexión a 5 Volts +

VE: Pin de contraste, se conecta normalmente a un potenciómetro en su pin de polo y el otro pin va directo a tierra.

Register Select RS: Nos permite elegir si escribir al Instruction Register usando el valor 0 o al Data Register usando el valor 1

Read/Write : Permite escribir si el valor es cero y leer si el valor es 1

Enable: Comienza la lectura o escritura sacando los pines DB7 a DB0 de su modo de triestado.

DB7 a DB0: Bus datos para escribir o leer. En el modo de operación de 4 bits sólo se usando los pines DB7 a DB4

A : Ánodo (pin positivo +5 Volts) para encender la luz de backlight

K: Cátodo (pin negativo 0 Volts) para encender la luz de backlight

Cómo leer y cómo escribir nuestro LCD

Hay tres pines que funcionan para poder leer o escribir los registros internos y la pantalla de nuestro LCD, estos son RS, RW y E. En la siguiente Tabla especificamos cómo realizar cada operación.

RS = 0 /R/W = 0 E=1 permiten enviar una instrucción al LCD, escribiendo el instruction register

RS = 1 /R/W = 0 E=1 permiten enviar datos al LCD, escribiendo el data register.

Generalmente el valor del pin Enable se usa como un Toggle o pulso y este se dispara cuando ya tengo todos los datos de los demás pines (RS, RW y DB7 a DB0) estables y con valores correctos.

Instrucciones internas del LCD

El LCD posee instrucciones internas que sirven para desde limpiar la pantalla o elegir el ancho de los caracteres hasta encender o apagar el display, las mismas estan explicadas en la siguiente tabla:

El formato de estas instrucciones es:

Valor del pin RS,

Valor del pin /R/W,

Una cantidad de ceros y luego un 1 para identificar la instrucción en los pines DB7 a DB0,

El resto después del 1 que identifica la instrucción, son los parámetros de la misma.

Por ejemplo la instrucción Display on/off control que controla tres funciones de nuestros display está codificada de la siguiente forma:

RS/R/WDB7DB6DB5DB4DB3DB2DB1DB0
0000001DCB

El valor RS es cero para indicar que estamos escribiendo al instruction register del LCD

El valor /R/W es cero para indicar que es una escritura

La instrucción está indicada por los pines DB7 a DB3 y es 00001

El pin DB2 es un parámetro que indica si prender o apagar el display

El pin DB1 es un parámetro que indica si está prendido o no el cursor

El pin DB0 es un parámetro que indica si el cursor parpadea o no

Si quisiéramos que el display esté prendido, mostrando el cursor y que este no parpadee enviaríamos la siguiente secuencia

RS/R/WDB7DB6DB5DB4DB3DB2DB1DB0
0000001110

Inicializar nuestro LCD

Para poder empezar a enviar letras a nuestro LCD primero debemos inicializarlo, el datasheet nos indica una secuencia de inicialización que vamos a analizar.

El primer paso es conectar al suministro eléctrico de 5 volts a nuestro LCD, para esto no necesitamos ninguna instrucción solo conectar correctamente los cables.

El segundo paso es enviar la instrucción Function Set que en este caso elige la operación del display como 8 bits (usa todos los pines de DB7 a DB0), una sóla línea y formas de caracteres de 5×8 puntos.

RS/R/WDB7DB6DB5DB4DB3DB2DB1DB0
00001100N/AN/A

El tercer paso es enviar la instrucción Display on/off control donde indicamos prender el display, mostrar el curso y que este no parpadee.

RS/R/WDB7DB6DB5DB4DB3DB2DB1DB0
0000001110

El cuarto paso y último paso en la inicialización es enviar la instrucción Entry Mode Set para decidir cómo es que vamos a mostrar los caracteres en este caso decidimos que después de mostrar una letra corra el cursor un lugar a la derecha

RS/R/WDB7DB6DB5DB4DB3DB2DB1DB0
0000000110

Finalmente ya estamos listos para escribir nuestra primera letra.

Escribiendo una letra en nuestro LCD

Al tener preparado ya nuestro LCD para recibir nuestra primera letra, el mismo espera la información en código ascii explicitado en los pines del DB7 al DB0 por ejemplo, a continuación la tabla de caracteres del lcd.

Para escribir la letra H mayúscula por ejemplo vemos que la combinación es 0100 1000 com lo que deberemos enviar estos valores:

RS/R/WDB7DB6DB5DB4DB3DB2DB1DB0
10001001000

El valor RS es 1 para indicar que estamos escribiendo al data register del LCD

El valor /R/W es 0 para indicar que es una escritura

En los  pines DB7 a DB0 espera el dato a escribir en memoria y es 01001000

Cómo funciona el CIA en la Commodore 64

La Commodore 64 posee dos CIA 6526 pero ninguno está conectado a un LCD, utilizando al chip VIC2 y  un modulador de RF la Commodore puede comunicarse con monitores con su salida de video y a televisores con su salida RF, en una futura entrega vamos a desarrollar el funcionamiento del chip VIC2.

Estudio visual

Para poder estudiar visualmente como conectar el LCD a nuestros procesadores y CIAs/VIAs y como programarlo en assembler para mostrar un mensaje  les dejo esta video que complementa al artículo.

LCD con 6510/CIA y 6502/VIA – 6502 vs 6510 Parte 9

Referencias

A continuación les dejo algunos links donde profundizar el tema:

VIDEOS

Video de la serie 6502 vs 6510 Parte 9 – LCD con 6510/CIA y 6502/VIA

LCD con 6510/CIA y 6502/VIA – 6502 vs 6510 Parte 9

Aquí tienen acceso a toda la serie:

6502 vs 6510 estudio detallado y comparación 

Aqui tienen acceso a todos los artículos publicados en Espacio Tec

Artículos en la serie C64 a Fondo

A continuación les dejo los links a los artículos anteriores de la serie

Introducción

Parte 1 – El módulo de reloj

Parte 2 – Pinout 6510 y 6502

Parte 3 – Codeando a Mano la Primera Instrucción de Código Máquina

Parte 4 – Primer Programa desde EEPROM

Parte 5 – I/O Pins del Procesador

Parte 6 – MOS 6503 Una Rareza

Parte 7 – VIA MOS 652 Interfaz con periféricos

Parte 8 – MOS 6526 CIA Interfaz con periféricos reloaded

PAPERS

W65C02S 8–bit Microprocessor 

6510 MICROPROCESSOR WITH I/O 

6502 Instruction Set 

​​HD44780U (LCD-II), (Dot Matrix Liquid Crystal Display Controller/Driver) 

Y como siempre la serie de Ben Eater del 6502

Build a 6502 computer | Ben Eater 

Todos los ejemplos de código de los videos los pueden encontrar en:

https://github.com/carlinhocr/6502_vs_6510

¿Por qué amamos al Monkey Island? Una carta de amor colectiva

Cuando aprendí a bordar en punto cruz en el 2015, mi primer proyecto fue bordar a LeChuck del Monkey Island 2. Me parecía increíble que las crucecitas del punto cruz fueran como pixeles, lo que me permitía hacer aparecer en la materialidad y tocar todos los pixelitos suaves de algodón que quisiera.

Lo hice para practicar “mini punto cruz”, que es como el punto cruz pero en una tela de trama mucho más apretada donde los pixelitos quedan en versión “mini”. Subí la foto a las redes y en seguida un montón de personas me escribieron para decirme cuánto les gustaba lo que había hecho, algunos estaban incluso interesados en comprármelo.

En ese momento descubrí que al contrario de lo que pensaba, no solo a mi hermana y a mí este juego nos había marcado la vida. En 1995 cuando jugué The Secret of Monkey Island, en mi clase nadie jugaba videojuegos, no eran populares. Compartía la alegría con mi hermana y con mi viejo, que volvía de trabajar y se sentaba con nosotras en la computadora a jugar. 

Mi primer bordado de LeChuck

Cuando nos trabábamos en una parte, era imposible avanzar. Sin internet, sin compañeros de clase que lo jugaran, nos quedaba la prueba y error eterna hasta entender qué había que hacer.

Me acuerdo que en el Monkey Island 2 estuvimos una semana encerradas en la prisión, hasta que entendimos que podíamos “abrir” el “colchón” y que debajo se encontraba el huesito para atraer al perro que tenía la llave en la boca. 

El nivel de felicidad de sentarme y abrir el juego, entrar en ese mundo fuera del mundo real, sumegirnos en islas, ser libres y hacer travesuras (como meterte por la ventana en la cocina del bar de la Scab Island y bardearle la vichyssoise al pobre cocinero).

Casi 10 años después de ese primer LeChuck en mini punto cruz me animé a publicar para la venta los bordados en Regina Azteca y al día de hoy tengo siempre pedidos activos. Pero lo más hermoso es cuando, casi de refilón, me cuentan sus experiencias con el juego: muchas veces me encargan un Guybrush para regalar a un hermano o hermana con quien jugaban en la infancia. Afloran recuerdos y sonrisas, la mejor versión de la nostalgia que me permite conectar mi infancia (esa que viví en soledad) y la infancia de quienes me compran un bordadito.

Pero si a lo largo de nuestras vidas jugamos tantos videojuegos (porque sabemos que el Monkey Island no fue el único), ¿qué hace tan especial a éste? ¿Por qué 30 años después seguimos jugándolo, recordándolo, escuchando su música, repitiendo sus chistes?

No tengo la respuesta a esta pregunta. No la encontré tampoco buscando en Google artículos en blogs, que los hay muchos pero todos se dedican a describir las maravillas de los juegos. ¡Sí! Fueron juegos increíbles, pero ¿por qué sobreviven en nuestro corazón con tanta fuerza? No lo podemos explicar simplemente con calidad gráfica, inteligencia, humor y nostalgia.

Hay algo más. 

Voy a espolvorear este artículo con algunas de las experiencias de las mas de 200 personas que respondieron a un pequeño Google Forms que hice circular por diversos foros (tuve respuestas en diferentes idiomas, por lo que algunas de las que aparecen están traducidas).

Se habla mucho de nostalgia cuando pensamos en estos juegos. Será el timing, cuando salió el The Secret of Monkey Island, la mayoría tendríamos entre 5 y 12 años; esa época de la vida donde uno está plenamente consciente, atento y receptivo. En ese momento, resultaba increíble tener la posibilidad de interactuar con tecnología, reírnos con los chistes, descifrar los puzzles, enamorarnos de la música (todavía hoy cuando escucho el tema de Elaine se me aprieta un poquito el corazón), llegar a final y empezarlo de nuevo.

Jugamos a otros juegos. Yo recuerdo al King Quest, por ejemplo. Al Indiana Jones, Loom. Muchos. Pero había algo en el Monkey Island que iba más allá y salía de la pantalla, o mejor dicho, lograba sumergirte en ella y realmente recorrer las islas, conocer a sus habitantes. Algo de la noche perpetua de Mêleé Island, de recorrer sola la ciudad de noche, dar la vuelta, cruzarme con los hombres de baja moral, charlar, seguir camino, entrar en el shop de la Voodoo Lady. Creo que sentía una libertad que a mi edad era imposible de experimentar. Y evidentemente, Guybrush era un personaje lo suficientemente hábil para que nos sintiéramos plenamente identificados con él. Sus aventuras y sus ansias de crecer y ser un temible pirata, eran también las nuestras.

En el blog de Ron Gilbert se encuentra un artículo que escribió en 1989, cuando estaba desarrollando el Monkey Island. Se llama “Por qué las aventuras gráficas apestan”. Ahí dice que prefiere “los juegos en los que el ritmo es lento y la recompensa viene por el ejercicio de pensar y descifrar, más que por la rapidez de los reflejos. Para mí, el elemento que da vida a las aventuras gráficas son las historias en torno a las que se tejen”. Habla de la experiencia inmersiva de un buen juego y su capacidad de absorberte y sumergirte en su mundo, y también de cómo esto se puede romper cuando por cualquier pavada tu protagonista se muere en un accidente (Sierra, ejem). ¿Cómo conseguir un entorno lo suficientemente seguro, que te sumerja, pero que a la vez sea desafiante?

El artículo de Ron Gilbert publicado en 1989

Pienso en el hotel de Scab Island… sabés que no te podés morir, pero ¿se acuerdan de haberse colado en la habitación de Largo LaGrande?, ¿la sensación de que podía entrar en cualquier momento y echarte… o peor? Todavía siento el apuro de revisar su habitación lo más rápido posible, porque venía el loco este, y era de temer. 

El Monkey Island fue revolucionario en este sentido, porque todos los juegos anteriores involucraban en algún momento la posibilidad de morir, obligando al jugador a salvar a cada rato. Incluso el Indiana Jones and the Last Crusade, del propio Gilbert tenía estas mecánicas de juego.

Ron en el 1989 mientras estaba cocinando el Monkey Island decía: “Por regla general, los juegos de aventura deberían poder jugarse de principio a fin sin morir ni salvar la partida, si el jugador es lo suficientemente cuidadoso y observador”. Lo incorporó en los siguientes títulos, en ningún Monkey Island no te podés morir.

La ironía omnipresente de incluir una fake death al estilo Sierra

Dave Grossman cuenta que creó la animación del borde del acantilado del que te caés y te “morís” en The Secret of Monkey Island pensando que se había perdido una reunión donde habían inventado un puzzle, porque vió que “había una especie de línea en el borde de la roca” y pensó que era una grieta: “esa misma noche, hice una versión diferente animando la roca para que se cayera, puse toda esta cosa elaborada en la que el acantilado se desmoronaba. Luego inventamos la excusa de que había un árbol de goma ahí abajo en el que Guybrush rebota y sobrevive. Pero no sin antes mostrar la parodia del mensaje de Sierra que dice: ¡Oh no! Lo siento, has muerto. No, ¡jaja! Este no es ese tipo de juego, es un juego de Lucasfilm.”

Para el Monkey Island, LucasFilm Games comenzó a implementar una técnica de gráficos que incluía una especie de trama entre los píxeles llamada dithering, que mezclaba los 16 colores existentes al momento, logrando imágenes con gradiente y profundidad. Los videojuegos anteriores tenían bloques de color sólido (de 8 colores algunos, otros 16) que hacían que los ilustradores, que eran artistas que no se especializaban en computación, tuvieran que explotar la creatividad al máximo, solo para alcanzar imágenes más o menos genéricas.

Los cielos de Steve Purcell y Mark Ferrari respectivamente

Los desarrolladores del Monkey Island cuentan que una vez que comenzaron a implementar el dithering -gracias al artista atrás de Loom, Mark Ferrari-, los fondos empezaron a verse cada vez más diferenciados; ya no podían repartirse el trabajo entre varios, porque cada artista estaba logrando escenas con un estilo singular. Resolvieron darle los fondos de Mêleé Island y similares a Ferrari, los de la Isla de Monkey Island a Steve Purcell. Una vez que lo divisás, es imposible no darte cuenta de las diferencias de estilo.

Jojo the monkey

¿Y la música? Mi viejo (el que nos trajo la versión pirateada que le había prestado un compañero de trabajo) tiene, a sus 72 años, de ringtone la intro del Monkey Island. Mencioné antes el tema de Elaine, ¿y la música de Mardi Grass de Booty Island?, la que suena de fondo en el Scumm Bar, el piano del monito en el bar de Scab Island… Es absolutamente memorable y hermosa. El creador de todo esto es Michael Land, un músico amante de la música renacentista que estudió programación y música electrónica en Harvard.

Guybrush Threepwood es también uno de los motivos por los que amamos tanto este juego. Ron Gilbert creó un protagonista que no era un pirata (pero pretendía serlo) en un mundo de piratas: “el jugador también está en esa situación, no es un pirata experimentado. Está muy bien lanzar al protagonista a un mundo que desconoce, porque el jugador tampoco sabe lo que está pasando. Así, ambos pueden aprender al mismo tiempo sobre lo que es ser un pirata. Tanto fue así que la primera frase de Monkey Island es Me llamo Guybrush Threepwood y quiero ser pirata”.

“La idea de un chico común que no tiene nombre, ni porte, ni la barbarie de un pirata quiera ser uno es gracioso. Te hace desear que lo logre”.

“El personaje principal es adorable, se orienta hacia el bien, a menudo fracasa, pero nunca deja de intentarlo”. 

Concept art original de Scab Island

Creo que puedo construir algún tipo de respuesta para la pregunta de este posteo. Es la música, los gráficos, la nostalgia, los personajes, el humor, la atmósfera, la temática, todo junto, todo mezclado en un Mix and Mojo inolvidable. Pero hay un elemento más. Mike Ferrari (el del dithering de los gráficos) lo explica de una manera hermosa. Para él, la inmortalidad del juego le pertenece a la historia

“La razón por la que estos juegos son clásicos, más que el motor SCUMM, o el arte, o cualquiera de los demás aspectos, es porque su ejercicio en la narración era muy bueno. Cuando alguien se sentaba a jugar estos juegos, se veía envuelto en lugares extraños, conocía gente interesante, entablaba relaciones, resolvía puzzles, descubría misterios… Para el jugador, era un gigantesco trabajo de ejercicio creativo mental y emocional”.

“La gente no entiende que toda su existencia se basa en la narración, pero es así”, continúa Ferrari, “quizá ese sea el verdadero secreto de Monkey Island”

Armando este artículo, me topé con innumerables experiencias interesantes que no quiero dejar afuera. Agrupo algunas y las dejo acá abajo, como testimonio y como carta de amor a este pequeño inmenso universo de piratas.

TSoMI corriendo en una Amiga 2000

Sobre la interacción con tecnología nueva:

“Recuerdo el asombro ante la novedad del objeto físico que representa una computadora. Monitores gruesos, curvados y cubiertos de estática, teclados pesados y toscos, todos los ruidos que hacían las computadoras antiguas al crujir, rechinar y zumbar. Además, la diversión sin fin de experimentar y hacer cosas al azar dentro de los juegos… Simplemente vivir en el mundo y caminar y mirar las cosas… Cuando eres adulto, entiendes mucho mejor los objetivos y el propósito de un juego, te centras en progresar y completarlo, pero cuando eres niño, simplemente juegas y lo disfrutas por lo que es en ese momento. No buscas realmente el objetivo de completarlo, ni siquiera entiendes cuál es el propósito del juego, simplemente existes en el mundo, vives con tu propio mundo”.

“Recuerdo muy bien la primera vez que jugamos. Mis padres y yo nos quedamos absolutamente atónitos con el sonido y los gráficos. Nos reímos mucho, ese tipo de juegos y humor eran totalmente nuevos. Tener un PC fue una sensación revolucionaria. Debido a las leyes sobre el juego en Alemania, en los años 90 no había salones recreativos donde los niños pudieran jugar (por ley, las máquinas recreativas tienen que estar al lado de los tragamonedas de los casinos, donde no se admiten niños por razones obvias). Había que ser lo suficientemente rico como para tener una consola y un televisor en color, o bien tener dinero y conocimientos de inglés y tecnología para un PC. Mis padres eran bastante pobres y no tenían conocimientos, pero estaban convencidos de que su única hija necesitaba crecer con esta tecnología que pronto se convertiría en algo importante. Los juegos eran lujosos y, sobre todo, jugar con una PC era algo más bien de adultos, de ricos, algo muy raro para los niños de mi edad en aquella época. Y comparado con los juegos de Gameboy o NES que conocíamos por los vecinos, para nosotros era una era de entretenimiento totalmente nuevo. Un amigo de mi padre le prestó su copia de MI, no teníamos videojuegos propios. Cuando pienso en cuando jugué MI por primera vez, hay una mezcla de emociones absolutamente salvaje, la emoción por conseguir una PC por nuestra cuenta, las cosas mágicas que ocurrían en la pantalla, la alegría por conseguir por fin que todo funcionara y pasar un raro tiempo libre con mis padres, que trabajaban duro, y hacían todas estas cosas raras de las que no tenían ni idea y estaban totalmente estresados por ello, sólo por mí.

“Mis viejos le compraron una compu usada a alguien, era de esas que la CPU era ancha y bajita. Nos la dieron para el día del niño de 2002. Cuando la chusmeamos para ver qué tenía en las carpetas del disco C, encontramos dos ejecutables que decían monkey.exe y monkey2.exe. Ejecutamos el primero y no podíamos creer que la compu haya venido con jueguitos instalados. Fue el mejor día del niño del que tengo recuerdo”.

“Tenía una Amiga 500 y era hija única: Guybrush me hacía un montón de compañía”.

“Jugar al MI 1 en la casa de unos compañeros del colegio, en un monitor monocromático. tratando de llevar el grog en los vasos hasta la cárcel”. 

Sobre las mecánicas de juego:

“Recuerdo que fue el primer juego que me contaba chistes de verdad. También que me contaba una historia. En definitiva, fue el primero que estaba escrito, dirigido y fotografiado como si fuera una película. El primero que se sentía como arte. Fue el primer mundo complejo con el que pude interactuar y sentir que lo habitaba”.

“En comparación con Maniac Mansion, Gilbert había añadido dos nuevos sistemas en el juego que te daban pistas sutilmente. Uno eran los árboles de diálogo: si charlas con la gente hasta agotar el diálogo, suelen darte pistas. Otro es el sistema de dinero”.

“Es una clase magistral de buen diseño y estética. Incluso si no sueles jugar a aventuras point and click, el arquetipo del pirata es reconocible al instante, y el tipo de humor es muy universal. Es la definición del encanto”.

“Es una obra única, realizada por muy buenos desarrolladores, diseñadores y compositores de música que fueron pioneros en lo suyo. Todos ellos dispusieron de una enorme cantidad de tiempo y dinero para terminar el juego. Fueron totalmente libres en sus decisiones y crearon un producto en el que todo encaja a la perfección”. 

Concept art original del MI2

Anécdotas preciosas: 

“Me gustaban los diálogos, pero me daba miedo LeChuck”.

“Jugábamos con mi tía y mi hermana al MI1, y nos quedamos atascadas en un puzzle durante horas. Mi abuela, que pasaba por la habitación con un cesto de la ropa sucia, sugirió usar el pollo de goma para resolver el puzzle. Al principio lo descartaron por ser una vieja que no entendía de juegos y pensaron que la idea era descabellada, pero finalmente utilizaron el pollo de goma para ver si resolvía el puzzle. Como no esperaban que ocurriera nada, no lo podían creer cuando oyeron que la memoria del viejo PC giraba, indicando que algo nuevo estaba a punto de ocurrir. Así es como mi abuela nos ayudó a pasar el Monkey Island”.

“Solía intentarlo todo, a veces dándole vueltas en la cama antes de irme a dormir. Una vez me desperté con la solución (que más tarde se demostró correcta) al puzzle del gran árbol de Booty Island en el MI 2”.

“Iba al puesto de diarios y le pedía al kiosquero si podía darle un vistazo a las revistas PC JUEGOS que tenían soluciones.

“Mi padre tenía un amigo que lo había jugado y lo mandaba al bar con preguntas. Al final del juego creo que llamé dos veces al teléfono de pistas”.

“Nos llamábamos por teléfono con nuestros amigos, a veces a altas horas de la noche, para disgusto de nuestros padres”.

“Tenía una copia pirata. No se podía guardar la partida, así que había que empezar desde el principio”.

“Le tenía un miedo tremendo a LeChuck al final del MI2”. 

“Mi hermana y yo éramos tan pequeñas que no sabíamos leer. Nos sentábamos en el regazo de mi padre y él nos leía todos los diálogos. Nos turnábamos para clickear el mouse”.

“Recuerdo que mi padre trajo The Secret of Monkey Island a casa porque alguien del trabajo se lo había mencionado. El juego era una copia pirata, en blanco y negro y sin sonido. Me gustó tanto que mi padre me compró una copia legal, y luego Lechuck’s Revenge. Cuando tenía unos 7 años me hice un Guybrush enorme de cartón y me lo llevé al colegio; otra niña le dibujó un pañuelo y me hizo llorar. Guybrush y Elaine se convirtieron en mis amigos imaginarios durante varios años. Siempre he tenido una intensa cercanía a los juegos, y sé que siempre la tendré”.

“¡El miedo que me daba la forma en la que caminaba LeChuck en el MI2!”

“Si quisiera contar una anécdota, se me viene a la mente mi padre leyéndome los diálogos cuando era muy chico y que en vez de decir “LeChuck” decía “Lecuk”. Así que para mí, durante muchos años fue Lecuk”.

“Las veces que veía jugar a papá y le daba sugerencias. El libro con las soluciones, la rueda de papel, la computadora vieja”.

“Compartir con amigos dónde había llegado o se había bloqueado cada uno”. 

“Para un chico que jugaba solo, resolver los puzles podía llevar mucho tiempo. A veces te quedabas atascado durante semanas, entonces imaginabas cómo sería la continuación de la historia, el final…, y casi escribías una historia sobre lo que habías imaginado”.

“Volver del colegio y jugar con mi hermana intentando hacer de todo para avanzar con lo historia”.

“Me divertía mucho y siempre lo jugábamos con mi hermanita, yo al teclado obvio”.

“Recuerdo estar ratos largos en la compu con mi papá jugando los fines de semana, él intentando descifrar los acertijos, yo de a ratos ayudaba pero me entretenía más con los fondos, la música y los personajes. Amaba a Stan, todavía hoy lo tengo de referencia para describir a personas demasiado expresivas. También recuerdo preguntarle a mi papá sobre cosas que aparecían o qué significaban algunas palabras (como almorranas jaja)”.

“Días de hablar por teléfono con un amigo, pasando el juego entre los dos, cada uno desde su casa con su computadora, probando cosas y tratando de avanzar a dúo”.

“Fue mí primer juego de chica casi repito tercer grado por quedarme despierta jugando toda la noche. Entonces me dormía en clase. Aprendí palabras en inglés porque teníamos esa versión pirateada y en el colegio se pensaban que era muy inteligente y bilingüe”. 

“La experiencia de jugar sin una guía. En ese tiempo las aventuras gráficas eran muy desafiantes ya que no había muchas pistas dentro del mismo y una vez que lograbas un avance por pequeño que sea era una sensación de triunfo increíble”.

“Recuerdo mí familia reírse intrigada al escucharme hablar por teléfono de un pollo de goma con polea”.

Escribí este artículo basándome en experiencias personales propias y de muchos desconocidos en internet, además rescaté entrevistas a los desarrolladores de un documental de oneretrotip en YouTube, y utilicé fragmentos del blog de Ron Gilbert, grumpygamer.

El resurgimiento de la Sega Genesis

La morocha de Sega se popularizó a principios de los ´90, pero eso no significa que no podamos encontrar nuevas propuestas para la Genesis en 2024. Hay muchos desarrolladores que continúan creando juegos más allá de la vida útil de la consola. En esta nota les recomiendo algunos de ellos.

***

No creo sorprender a nadie cuando les confieso que, cada tanto, sigo metiéndole a la Seguita. ¡Y qué lindo es saber que continúan apareciendo flamantes obras! Tiene propuestas fantásticas que representan algunos de los mejores momentos de mi infancia.

Para un sistema que se suponía había quedado atrás en los años ´90, todavía hoy se está creando nuevo software. Muchos de estos juegos son impresionantes y se han lanzado físicamente en en el mercado, mientras que otros se han distribuido electrónicamente como ROMs. Casi todos también se pueden encontrar para PC vía Steam.

Veamos algunos de los nuevos mejores títulos que salieron en los últimos cinco años. ¡Que el vicio no pare!

Tanglewood: puzzles de colores

La primera vez que descubrí que hay juegos modernos para la Sega Genesis fue cuando, allá por 2018, me topé con Tanglewood.

Es una experiencia de plataformas y rompecabezas en el que tomás el control de una criatura parecida a un zorro llamada Nymm, que ha sido separada de su hogar. Por su estructura, tipos de acertijos y mecánicas de juego, me recordó mucho al Ori and the Blind Forest mezclado con un poco del Lion King.

Tanglewood (2018)

A lo largo de la aventura, unos redondos amigos otorgan a Nymm diferentes habilidades para acceder a áreas desconocidas u obtener habilidades temporales. Por ejemplo, una de las habilidades nos permite tomar el control de los enemigos; en un minuto puede estar persiguiéndote un bicho enorme, pero al siguiente lo montás a través de abismos para evitar una muerte filosa.

Tanglewood es muy recomendable. Un juego seductor que presenta protagonistas simpáticos, un mundo vibrante y, en general, una experiencia muy auténtica para cualquiera que busque sumergirse en la nostalgia de la SEGA Mega Drive de 16 bits.

Xeno Crisis: un Smash TV moderno

Una excelente experiencia co-op para el sillón. Xeno Crisis es un shoot-em-up de 2019 con vista cenital y bastantearcadoso. La onda es pelear, solo o junto a un amigo, contra oleadas de alienígenas. Fusiona elementos de juegos modernos con gráficos y sonido old-school. Por ejemplo, los niveles se van generando proceduralmente, lo que hace que cada partida sea única al mejor estilo roguelike.

Una de las filosofías de estos juegos modernos de Sega Genesis es crearlos con las limitaciones de la consola. Y, sin embargo, vemos que realmente ponen la potencia de sus 16-bits al límite.

Xeno Crisis (2019)

Ese mismo año salió, por ejemplo, salió Tanzer, un juego que realmente te vuela la peluca. Es un plataformero hack-and-slash lleno de momentos de acción. Se ve (y se juega) muy bien.

Pero volviendo a Xeno Crisis, es una auténtica maravilla para cualquiera a quien le gusten los run ‘n’ guns. Fiel a la naturaleza del género, es muy desafiante, pero recompensa aún más al jugador con una banda sonora fantástica, una jugabilidad súper adictiva, una presentación sólida y un final satisfactorio… siempre que logres llegar tan lejos.

Demons of Asteborg: exprimiendo a la Genesis

Y hablando de juegos modernos que potencian la consola,Demons of Asteborg es un titulazo de 2021 que verdaderamente exprime la potencia de la Mega Drive al máximo. Fue creado por un estudio francés y recuerda (cariñosamente) tanto a Ghost N Ghouls como a Castlevania, no sólo en su estilo visual sino también en la dificultad.

Acá te vas moviendo hacia la derecha y matando a los enemigos que aparecen. Pero pronto comienzan a pasar algunas cosas interesantes. Por ejemplo, nuestro personaje aprende un nuevo hechizo mágico en cada nivel que luego se usa para navegar la segunda mitad y es absolutamente necesario para derrotar a los bosses, que requieren de estrategias específicas.

Demons of Asteborg (2021)

Incluso en sus dificultades más bajas, Demons of Asteborg es súper salado. Especialmente al final de cada nivel, cuando llegan los desafiantes bosses. Hubo un par de jefes que me hicieron sudar la gota gorda, quizás tanto como aquellos más complicados del Hollow Knight.

Al final de cada nivel podemos acceder al shop para mejorar nuestras habilidades, lo cual le agrega un pequeño elemento RPG que resulta agradable. Cuando parece que estamos entendiendo de qué va el juego, en seguida trae algo nuevo a la mesa.

Por mencionar algunos ejemplos, sobre el final tenemos una breve sección de disparos al estilo Space Harrier, y en un momento subimos a una torre giratoria a lo Mickey Mania. Otro nivel es directamente un homenaje a Castlevania: Bloodlines. La verdad que Demons of Asteborg es una delicia para los amantes de la Mega Drive.

Sonic 3D Blast: Director´s Cut

Me dejo para el final un placer culposo. Sonic 3D Blast ciertamente no fue el “Sonic 4” que queríamos. Uno de los grandes problemas de Sonic sigue siendo el salto al 3D que Mario logró con tanta naturalidad. Sega confió en Traveller’s Tales para desarrollar aquel proyecto, apostando por un plataformero de niveles isométricos con modelos y escenarios pre-renderizados.

Los muchachos del estudio ya tenían cierta experiencia con títulos como Mickey Mania (1994) y Toy Story (1995), dos muy buenos títulos de la Genesis que le sacan el jugo a la consola. Y, a decir verdad, 3D Blast se veía bastante increíble para aquellos modestos 16 bits, aunque la mecánica de juego era tan distinta que casi no podíamos considerarlo un “Sonic”.

Además de ser el fundador, programador y director de Traveller’s Tales (estudio actualmente responsable de los videojuegos de la franquicia Lego), Jon Burton es un apasionado de las remasterizaciones de juegos antiguos. O, por lo menos, así lo explica en su canal de Youtube Gamehut.

Burton tomó impulso por la tremenda cantidad de comentarios positivos de la comunidad, recuperó viejos assets y comenzó a meterle pata. Pero, a diferencia de muchos otros ROM hacks de Sonic, él se puso como límite el propio hardware de la Mega Drive.

Hoy la versión final de Sonic 3D Blast: Director´s Cut está disponible en Steam Workshop, en forma de parche descargable si uno dispone del juego original. Por supuesto, también se encuentra fácilmente en Internet para ejecutar en emuladores como Gens, que funciona de maravilla.

Sonic 3D Blast: Director´s Cut (2022)

Las mejoras y correcciones que se aplicaron al Director´s Cut son tantas que la convierten, prácticamente, en un juego nuevo. Para empezar, se agregó un mapa que permite elegir los niveles a medida que progresamos, lo que facilita volver a buscar una Esmeralda del Caos que se nos haya pasado, por ejemplo.

Al respecto, ¡finalmente podemos convertirnos en Super Sonic! Para hacerlo, el jugador primero tiene que conseguir las Siete Esmeraldas del Caos. Después juntar 50 rings, saltar y presionar el botón de girar en el aire. Como Super Sonic tenemos Power Sneakers, Homing Attack e Invencibilidad activos al mismo tiempo.

En cuanto al control, se mejoró muchísimo. Sonic se hizo más rápido para darle al juego una sensación de velocidad similar a los demás títulos de la saga. Sus giros también son más veloces y la cámara se extiende aún más cuando viaja a alta velocidad (lo cual se ve muy copado).

Algunos otros detalles ayudan a mantener la velocidad. Chocar contra las paredes no cancela el impulso de Sonic, lo que le permite subir escaleras más rápido. Ahora, cuando es golpeado, Sonic solo pierde un Flicky a la vez, siempre que tenga al menos un anillo.

***

Hay realmente un montón de nuevos juegos modernos para la Sega Genesis. También podríamos haber mencionado FoxyLand, Coffee Crisis o el aclamado RPG Pier Solar (todos en mi wishlist). ¿Conocen algún otro que puedan mencionar? ¡Pueden dejarnos sus comentarios!

Si les gustó esta nota, recomienden a sus amigos. Y sino les gustó, le avisan a sus enemigos. ¡Recuerden que pueden apoyar a Espacio TEC subscribiéndose al Club Pixel o aportando con un cafecito!

Luciano “16-Bits” Sívori

Podés seguirme por en Instagram y en Facebook. También tengo este blog de vicios personales.

All your base are belong to us.”

C64 a Fondo – 6502 vs 6510 Parte 8 – MOS 6526 CIA Interfaz con periféricos reloaded

Hola, en esta entrega vamos a estudiar el MOS 6526 también conocido como CIA o complex adapter interface. Son los famosos chips que usa la Commodore 64 entre el procesador y el teclado, ports de usuario y ports de joystick (control port 1 y 2) entre otras conexiones.

¿Por qué necesito algo entre el cpu 6510 y un periférico?

Los procesadores tienen como características ser muy rápidos, estamos hablando de 1 millón de operaciones o ciclos de reloj por segundo en el caso del 6510. Un periférico como el datasette o la disquetera está en el orden de 300 bytes por segundo de transferencia. 

Si el procesador tuviera que esperar cada acceso de información disponible sería toda la computadora extremadamente lenta, por eso ponemos un chip en el medio para que medie entre  el procesador y los periféricos.

Este chip tiene como función recibir la información que el 6510 le envía, mantenerla disponible y pasarla al periférico cuando este la requiera; también recibir la información desde el periférico, mantenerla y avisar al procesador que tiene información disponible para él. De esta forma el bus de datos se mantiene libre hasta que el procesador tenga que comunicarse con el periférico.

El CIA – Complex Interface Adapter MOS 6526

Pinout

Los pines, VCC, RS0 a RS3, /RES, DB0 a DB7, PHI2, R/W, /IRQ presentan funcionamientos similares al VIA MOS 6522, pero primero vamos a dar detalles de funcionamiento de los pines presentes sólo en el CIA. Cuando en el diagrama un puerto comienza con una / leer como BARRA y significa que este pin es Active Low.

/PC y /FLAG se utilizan juntos para realizar un handshake entre el procesador y el CIA, también el pin /FLAG sólo ,puede utilizarse para recibir una señal de otro 6526 y quedar marcado como flag de interrupción encadenando ambos CIA. El pin  /PC es output y pin /FLAG es input siempre.

TOD este pin requiere una conexión externa de 60Hz o 50Hz con un nivel programable de TTL para mantener el reloj interno del CIA. 

CNT puede recibir pulsos para usar como un contador en Timer A o Timer B o ser output y escribir pulsos del timer A o B.

SP Es un pin de input o output donde los BITS del puerto serial del chip son escritos. El Serial Data Register se conecta con el Shift Register y cuando recibe un pulso en el pin CNT hace un shift out del Shift Register un bit a la vez en el pin SP, esto lo hace por 8 pulsos o 8 bits del registro momento en el cual se genera una interrupción para avisar que se pueden enviar más datos.

/CS el CIA posee un sólo pin que funciona como Chip Select, al estar en Low el chip responde a los datos en DB0 a DB7

Aquí repasamos los pines con funcionamiento similar al VIA

VSS y VCC/VDD son los pines de Ground y 5 Volts respectivamente

PA0 a PA7 Port Address A: son pines de datos bidireccionales (input y output) para el primer puerto de periféricos el A, el periférico se comunica con el 6526 por esos pines.

PB0 a PB7 Port Address B:  son pines de datos bidireccionales (input y output) para el segundo puerto de periféricos el B, el periférico se comunica con el 6526 por esos pines.

RS0 a RS3 son pines que permiten seleccionar qué registro interno del CIA se accede cuándo el procesador lee o escribe los puertos de datos D0 a D7

RESB puerto de reset, el 6526 necesita de un reset cuando el 6510 es prendido por primera vez o pasa por un reset, en este pin recibe la señal. (Active Low).

DB0 a DB7 Data Bus: en estos pines el procesador 6510 se comunica con el 6526 para leer o escribir datos y acceder a cualquiera de los registros internos del CIA.

PHI2 en este pin se recibe la señal de reloj que es la misma que tiene el 6510, al estar diseñado el 6526 para trabajar con estos procesadores todo el timing interno funciona coordinadamente con toda la línea 6500.

RWB en este pin específico, se indica si se está realizando una lectura (high) o una escritura (low) a los pines D0 a D7.

IRQB este pin cuando está en estado low crea una interrupción al procesador para que este tome información del puerto de periférico que corresponde.

Registros

Los registros varían para reflejar la diferencia en algunas funciones con respecto al VIA que ya estudiamos, el CIA posee 16 registros diferentes aquí los detalles de algunos de ellos.

Este chip posee 16 registros internos que permiten entre otras funciones:

  • Seleccionar si los pines del canal de datos son de input o output
  • Almacenar la información que entrega o recibe el procesador de modo de mantener el canal de datos vacío pero la información preservada.
  • Elegir si el CIA puede o no interrumpir al procesador cuando tiene información para entregar.

Si queremos usar por ejemplo los puertos del PB0 al PB7 como output para darle información al periférico debemos primero seleccionar el Data Direction Register B. El mismo se selecciona a través de los puertos RS0 a RS3 en este caso poniendo los pines con los valores de 0v o Ground (<0.4 volts) en caso de tener un 0 en la tabla siguiente o 5v en caso de tener un valor 1:

RS3= 0 RS2= 0 RS1= 1 RS0= 1

Esto corresponde con el valor 3 del Register Number (0011), nótese que es diferente al VIA que espera un valor de 0010 o sea de 2 para el data register B. 

Luego de esta selección el procesador debe escribir el valor deseado a través de los pines D0 a D7. Para poner un pin en OUTPUT el valor deberá ser 1 y en INPUT deberá ser cero. Si quisiera poner todos los pines como output el procesador escribirá 1111 1111.

Luego el procesador debe enviar la información que quiere mandar de output al periférico para esto se utiliza el registro Output Register. En nuestro caso usaremos el Output Register B para seleccionarlo en los pines RS3 a RS0 poner los siguientes valores:

RS3= 0 RS2= 0 RS1= 0 RS0= 1

Que corresponden al valor de registro uno (0001), fijense que es diferente al valor usado en el VIA que era de cero (0000).

Si quisiera tener como valores de Salida en PB7 a PB0 los valores 10101010 debería escribir estos mismos en el registros enviando esta información por los pines D7 a D0.

Estos puertos soportan input latching, que es una característica por la cual el puerto conserva el valor de input que recibió desde el periférico aunque el mismo no refresque la señal. Los datos se mantienen (aunque cambien los valores en los pines PB0 a PB7) mientras el flag CB1 de interrupción este set y se borran cuando este flag es desactivado. 

Handshaking

El CIA puede hacer handshaking usando el pin /PC como output y el /FLAG como input. /PC va a ir a valor cero o low por un ciclo de tiempo P  después de una lectura o escritura del Puerto B. Esta señal puede usarse para indicar “data ready” en el puerto B o “data accepted” en el mismo puerto dependiendo si se trató de una lectura o una escritura respectivamente.

Se puede hacer handshake en transferencia de 16 bits usando ambos puertos A y B siempre leyendo o escribiendo primero al puerto A.

Cualquier señal low al pin /FLAG va a disparar una interrupción del bit FLAG, se puede usar como un puerto genérico para recibir interrupciones o se puede conectar al puerto /PC de otro CIA para recibir el low de ese pin y saber que sucedió un handshake en el puerto B de ese otro CIA (CIA 2 por ejemplo)

Timers

Los timers A y B del CIA pueden ser arrancados y parados a voluntad usando el control register A o el B respectivamente.

Reloj

También como funciones adicionales presenta un reloj Time of Day (TOD). El TOD es un reloj de 24 horas con una graduación de una décima de segundo. Está organizado en 4 registros (que se seleccionan con los pines RS0 a RS3), décimas de segundo, segundos, minutos y horas. El mismo necesita en el pin TOD la conexión con un clock de 60 Hz o 50 Hz.

Contador

Otra función adicional es contar los pulsos del pin de reloj recibidos en PHI2 en TIMER A o TIMER B o los pulsos recibidos en el pin CNT.

Puerto Serial (Shift Register)

El CIA también posee un puerto serial sincrónico de 8 bits con un buffer de 8 bits. Un bit de control selecciona si se va a recibir un input o output. 

En modo input los datos recibidos en el pin SP se ingresan a un shift register cuando se recibe una transición de low a high en el pin CNT. Luego de 8 CNT los datos en el shift register se copian al Serial Data Register y una interrupción es generada. El procesador va a leer los 8 bits contenidos en el Serial Data Register a través de los pines D0 a D7.

En modo output el TIMER A se usa como generador de baudios. Los datos se envían por el pin de SP. La tasa máxima de transferencia en baudios es PHI2 dividido por 4. La transmisión va a empezar después de escribir al Serial Data Register, la señal del TIMER A aparece como pulsos de output en el pin CNT y los datos se escriben al Shift Register y luego saldrán uno a uno por el pin SP cuando un pulso CNT ocurra. Luego de 8 pulsos CNT se genera una interrupción para indicar que se pueden mandar más datos.

Si el procesador carga datos en el Serial Data Register antes de que se produzca la interrupción cuando esta se produzca y se transmitan los datos el Shift Register va a ser cargado automáticamente luego de la transmisión. Si el procesador se mantiene en forma constante 1 byte adelantado al consumo del Shift Register la transmisión será continua.

Los datos son transmitidos con el Most Significant Bit primero.

Cómo funciona el CIA en la Commodore 64 

La Commodore 64 posee dos CIA conocidos en el mother como U1 y U2, aquí podemos ver su conexión esquemática con otras partes de la computadora:

Esquema de conexión

Funciones CIA 1 (U1)

Las funciones de la CIA 1 incluyen el control del teclado, control de dos puertos de joystick, el control de los dispositivos tipo paddle (potenciómetro como para el Arkanoid) y la lectura de datos del datasette conectado al pin de Cassette RD.

Los 8 pines del Port A están seteados como input y conectados a los 8 conectores de columnas del conector de teclado CN1. Los pines del del Port B están seteados como inputs y conectados a los 8 conectores de filas del conector de teclado CN1 (20 pines machos). 

Las cuatros direcciones del Control Port 2 (JOYB0, JOYB1 ,JOYB2 y JOYB3) y el pin de botón BTNB están conectadas al puerto A. Las cuatros direcciones del Control Port 1 (JOYA0, JOYA1 ,JOYA2 y JOYA3) y el pin de botón BTNB están conectadas al puerto B. Si están cruzados los A y los B !

Funciones CIA 2 (U2)

Este posee dos funciones principales que son la conexión al puerto de Usuario, la conexión al bus serial de la commodore, conexión al puerto RS-232, la configuración del VIC (selección de la posición de la memoria interna) y el control de las interrupciones no enmascarables NMI.

El Port B está enteramente conectado al User Port al cuál también se conecta el pin 2 del Port A. El Port A en sus conexiones desde el pin PA7 a PA3 están dedicados al puerto serie.

Direccionamiento de Ambos CIA

Para acceder a los CIA vamos a usar los puerto RS3 a RS0 que están conectados a los puertos de direccionamiento A3 a A0 del 6510. De esta forma podemos acceder a los registros del CIA 1 con las direcciones de DC00 a DC0F y al CIA 2 con las direcciones de DD00 a DD0F

Los pines de chip enable de cada CIA (recordemos que esperan un resultado de 0 volts o LOW) están conectados a la PLA ( a través del pin 1 de I/O) y a dos chips 74LS239 que son decodificadores y entre ambos conectan la CIA, el VIC y el SID. 

El chip select no va a funcionar a menos que también se reciba la señal high del clock Phi2 al mismo tiempo.

El CIA responde al 6510 cuando el ciclo del reloj PHI2 va de low a high y a low nuevamente , esto toma aproximadamente unos 1000 nanosegundos. Durante ese tiempo el pin de CS (chip select) es mantenido en Low y si el pin de R/W es high ocurre una lectura y si es low ocurre una escritura, los pines RS reciben una dirección a un registro interno con el databus dando o recibiendo datos.

Teniendo en cuenta el diagrama de timing para que los datos sean válidos y por ejemplo puedan ser leídos, el 6510 tiene acceder al CIA mientras el pin CS esté en low, el registro interno sea direccionado por los register select RS3 a RS0, PHI2 debe estar high y los datos tienen que ser válidos (mantenidos correctamente en el tiempo).

En Resumen

Nuestros dos CIAs manejan teclado, joystick, timers, lectura de datasette, puerto de usuario, paddles y comunicaciones seriales.

El CIA en funcionamiento

Para ver visualmente como conectar un CIA al 6510 y setearlo como output y también en su función de uso de reloj les dejo como siempre un video en detalle de la serie. 

En este vamos a ver cómo se conectan los pines, que código máquina escribir para comunicarnos con los registros internos y un ejemplo de output.

6526 CIA Complex Interface Adapter Programado – 6502 vs 6510 parte 8 

Artículos en la serie C64 a Fondo

A continuación les dejo los links a los artículos anteriores de la serie

Introducción
Parte 1 – El módulo de reloj
Parte 2 – Pinout 6510 y 6502
Parte 3 – Codeando a Mano la Primera Instrucción de Código Máquina
Parte 4 – Primer Programa desde EEPROM
Parte 5 – I/O Pins del Procesador
Parte 6 – MOS 6503 Una Rareza
Parte 7 – VIA MOS 6522 Interfaz con periféricos

Referencias

6526 CIA Complex Interface Adapter Programado – 6502 vs 6510 parte 8 

Video para profundizar el saber sobre la CIA

A continuación les dejo algunos links donde profundizar el tema

CIA – C64-Wiki 

Libro Machine Language for the Commodore 64,128,  y otras Computadoras Commodore Anexo I

CIA 6526 Datasheet 

Commodore 64 clock using the CIA TOD clock (from “Compute!”) | Retro64 

C64 Schematic CIA 

vasm portable and retargetable assembler 

6502.org: Tutorials and Aids 

Reemplazo Moderno de la CIA

J-CIA64 6526/8521 Replacement for Commodore 64/128/1570/1571 – Retro 8bit Shop 

Referencias de velocidades de transferencias de periféricos:

C64/C128 I/O performances 

Y como siempre la serie de Ben Eater del 6502

Build a 6502 computer | Ben Eater 

Todos los ejemplos de código de los videos los pueden encontrar en:

https://github.com/carlinhocr/6502_vs_6510

La historia de los boomers-shooters (y por qué Doom los inspiró)

Está surgiendo un nuevo (y antiguo) tipo de juego de disparos en primera persona. “Boomer shooter” es el último término de moda en el gaming que sigue a “Metroidvania”, “Roguelike” o “Soulslike” en el ámbito de los subgéneros de videojuegos.

¿Qué son los boomer-shooters?

El término se aplica a los FPS (es decir, juegos de disparos en primera persona) que se remontan intencionalmente –y ésta es la clave– a los clásicos de PC de finales de los ´90 como Doom y Quake.

Call of Duty y Battlefield acaparan actualmente el mercado de los FPS, lo que indica una tendencia hacia el realismo que ha durado ya más de una década. Pero muchos desarrolladores independientes quieren revivir lo que creen que fueron los días de gloria del género.

Así que, cuando comenzó esta moda a finales de la década de 2010, surgió un nuevo término para describir a estos FPS modernos que se sienten como los clásicos: “boomer-shooters”.

Estos juegos ofrecen una sensación de puro escapismo y son perfectos para los fanáticos de los shooters clásicos, ya que brindan combates satisfactorios, un diseño de niveles memorable y una banda sonora vertiginosa.

Hoy abrís la página de Steam y está lleno. Realmente hay un montón. Entre los mejores encontramos títulos como Project Warlock, Ion Fury, Cultic y el FPS argentino Hellbound. ¡Argentino, papá! Pero de todos ellos, el mejor para muchos (y yo me incluyo) es DUSK.

Se trata de un FPS, de inspiración retro, desarrollado por David Szymanski y publicado por New Blood Interactive. El videojuego toma todo lo que estaba bien con Doom, Quake, Blood y Heretic y lo moderniza para brindar una experiencia hermosa.

La trama (que, por supuesto, es lo que menos interesa en este tipo de juegos) va por este lado. Tu personaje es un tipo apodado como el “Dusk Dude” y, supuestamente, oficia de cazador de tesoros. Después de enterarse de un tesoro oculto debajo de la pintoresca y pequeña ciudad de Dusk, se dispone a ver qué puede encontrar, solo para ser colgado de ganchos de carne por los locos montañeses que actualmente residen en la ciudad.

Así arrancamos el juego: colgados boca arriba. Pronto nos enteramos de que una entidad malvada ha tocado a los residentes sureños de Dusk y los está impulsando a hacer cosas horribles.

Armados con un arsenal de pistolas antiguas y armas mágicas, agregando una velocidad de carrera que avergonzaría a un corredor olímpico, el Dusk Dude se propone detener a los cultistas de la única manera que sabe: con un buen escopetazo que haga volar todo por los aires.

DUSK: the good ´ol 90s

En DUSK, la jugabilidad es principalmente la estándar de los shooters de los 90: movimientos increíblemente rápidos, acción intensa y una amplia variedad de armas peligrosas. Lo que distingue al juego son dos características particulares.

Primero, al igual que Blood y Heretic, el juego se apoya mucho en el terror, hasta el punto de que llega a dar algo de miedito. Se generan buenos momentos de suspenso si estás jugando a la noche y con los auriculares puestos.

Por otro lado, si bien DUSK agarra lo mejor de aquellos FPS –como la brutalidad y el hardcore que manejan Doom y Quake– también se toma su tiempo para incluir instancias de exploración y diseños de niveles que aprovechan algunos powerups muy originales.

El juego se lanzó en 2018 y cuenta con tres episodios que son uno mejor que el otro. Los diez niveles de cada parte llevan unos 5 a 10 minutos cada uno, dependiendo del tiempo que quieras dedicar a la exploración.

DUSK, el boomer-shooter que no te podés perder.

Como era típico de aquella época, cada nuevo capítulo nos quita todas las armas que el Dusk Dude acumuló en el episodio anterior. De manera interesante, los niveles de dificultad más altos hacen que el protagonista directamente pierda todas sus armas entre cada nivel individual.

La génesis de los boomers-shooters

Retrocedamos un poquito más. En 1993, iD Software cambió la industria de los videojuegos para siempre con Wolfenstein 3D, un videojuego de acción pseudo-3D que introdujo al mundo el género de juegos de disparos en primera persona (FPS).

Unos años más tarde, iD Software lanzaría Doom, que conquistó al mundo entero con imágenes demoníacas y sangrientas, armas grandilocuentes, diseño de niveles impresionantes y una jugabilidad muy dinámica.

Una oleada de juegos de FPS denominados “clones de Doom” llegó a finales de los 90 y, en muchos sentidos, estos fueron los shooters originales del boom. Varios clásicos como Quake, Hexen, Duke Nukem 3D, Shadow Warrior, Blood y Rise of the Triad surgieron de compañías como iD, Raven Software y 3D Realms.

La Sega Genesis tuvo su propio clon (Zero Tolerance, de 1994) y hasta George Lucas con su compañía, LucasArts, se subió al tren de Doom con su propio juego de disparos en primera persona ambientado en el universo de Star Wars. ¡Y qué pedazo de juego era!

Star Wars: Dark Forces (1995) tenía una mecánica de movimiento muy variada (incluida la capacidad de mirar hacia arriba y hacia abajo), diseños de niveles de varios pisos, efectos atmosféricos como la neblina, texturas animadas y el uso de objetos 3D.

Doom, y todos sus clones, se caracterizaban por tener campañas basadas en niveles que generalmente estaban diseñadas como laberintos gigantes. Y, por supuesto, compartían ese estilo visual 3D inicial de texturas pixeladas de baja resolución y modelos de personajes llenos de bordes gruesos y ásperos.

Si bien muchos de estos se consideran de los mejores juegos de FPS de todos los tiempos, las modas eventualmente comenzaron a tender hacia el realismo con franquicias como Medal of Honor, Battlefield y Call of Duty. Incluso Doom ralentizó drásticamente su ritmo con Doom 3 de 2004 (juegazo, por cierto).

El auge de los indies FPS

Los boomers-shooters se desvanecieron en la oscuridad a principios de la década de 2010, pero la escena independiente no estaba lista para dejarlos morir. Juegos como Wolfenstein: The New Order y Doom (la versión de 2016) demostraron que existía una enorme demanda de FPS que actualizaran ese formato clásico para una nueva era. Sin embargo, fue en el contexto indie donde los shooters boomers realmente comenzaron a florecer.

Si bien el origen exacto del término en relación con los videojuegos no está claro, los desarrolladores comenzaron a capitalizar la tendencia a principios de 2019, utilizando el término con fines promocionales en Twitter y en comunicados de prensa.

Juegos como el ya mencionado DUSK recuperan lo que hizo que Doom y Quake fueran tan memorables en la década de 1990, incluso en el estilo visual. Si bien la mayoría de los boomers-shooters utilizan motores de videojuegos modernos como Unity y Unreal Engine 4 (que evitan la naturaleza cuadrada de las imágenes de la vieja escuela) todavía mantienen las mismas velocidades ridículas y armas extrañas que hicieron que los clásicos fueran tan memorables.

Hoy los boomers-shooters la están rompiendo en una época donde el retro-gaming está más de moda que nunca. Y, también hay que reconocerlo, el Doom original sigue muy vivo en los corazoncitos gamers, en un año donde el mod MyHouse.wad se convirtió en una de las experiencias más terroríficas en mucho tiempo… pero esa es madera para otra historia.

Doom y todos sus hermosos clones de los 90 fueron realmente los “booms” de la industria de los videojuegos, en un sentido figurado. Por eso, a mí no se me ocurre un nombre más apropiado para este nostálgico subgénero de FPS.

¿Conocían los boomers-shooters? ¿Cuál es su FPS retro favorito? ¡IDKFA, Motherfuckers!

Luciano “The Doom Guy” Sívori

Podés seguirme en:

https://www.instagram.com/viajarleyendo451/

https://viajarleyendo451.blogspot.com/

https://www.facebook.com/sivoriluciano