El futuro de la emulacion

Bien, hoy voy a cambiar un poco el tercio y no voy a hablar sobre el mundo del PC/XT. Como comentaba en Zonadepruebas y GP32spain, a la vista de un nuevo emulador, DICE, creo que he visto la tendencia a seguir en los proximos años en cuanto a emulacion se refiere. Reproduzco el articulo:

Acabo de leer este articulo de Ars Technica:

Accuracy takes power: one man’s 3GHz quest to build a perfect SNES emulator

En donde, a grandes rasgos nos hablan de como los emuladores actuales tienden cada vez mas a la sincronizacion perfecta de todos los elementos emulados, para asi conseguir una emulacion mas fiel.

Asi, tenemos casos bestiales, Zsnes emula SNES con un x86 a 300mhz, mientras que el emulador del articulo, Bsnes necesita uno a 3000mhz.

Obviamente, la emulacion del ultimo es mucho mas fiel, y como se comenta, hay algunos juegos que requieren de esta potencia extra de cpu para poder emular efectos en unos pocos juegos que de otra forma los harian injugables en su totalidad.

Pero aqui viene la que para mi gusto es la magra con tomate del articulo. Se nos habla de un nuevo emulador, DICE, cuya filosofia no es la tipica de un emulador tal y como lo conocemos. Este software se dedica a simular en tiempo real los transistores de los que esta formado el sistema original, la latencia electrica entre los componentes, las resistencias, los condensadores… todo…

Imaginaos un programa de simulacion de circuitos, pero cuya funcion no sea ayudar a la creacion de los mismos, si no simular en tiempo real lo que haria dicho circuito, llevandolo a sus ultimas consecuencias.

Y aqui me vais a permitir que haga un alto en el camino y os cuente una historia que esta relacionada y que me va a servir de parabola para explicar lo que yo creo que va a ser la emulacion de sistemas retro en las proximas decadas.

A principios de los 90 comenzaron a verse los primeros emuladores de Spectrum. Todos recordamos aquel genial emulador de Pedro Gimeno. Este emulador funcionaba con snapshots de memoria.

Alguien cargaba un juego desde cinta directamente al emulador, y luego el programa podia hacer un volcado de la memoria completa del spectrum a un fichero .SNA. Luego podias cargar ese volcado las veces que quisieras. El sistema funcionaba, y era muy rapido, pero perdias elementos, como la pantalla de carga del juego, los efectos durante el mismo, que en muchos juegos estaban muy currados…

El siguente paso fue un emulador que cargaba ficheros .WAV. Tu grababas tu cinta en wav a pelo, y el emulador lo cargaba. Pero claro, los juegos terminaban ocupando 40 megas, 50 megas… una barbaridad, habia que hacer algo para unir lo mejor de los dos sistemas.

Asi surgio el formato TZX. Este formato es una ‘partitura’ de la cinta en si. En vez de grabar la cinta, haces una partitura, el emulador la ‘toca’ y el resultado final es la cinta original. Ocupa poco y es una recreacion perfecta. El sistema perfecto.

La gran ventaja era que servia en los dos sentidos, podias pasar de cinta a TZX… y de TZX a cinta, de forma que te bajas un juego de internet, lo grabas en una cinta y puedes rularlo en el hardware original!

Volvamos a 2011 y a lo que comentaba. Vemos que la actual tendencia es replicar electricamente los sistemas a emular… y si esto es posible, que impide que estos futuros emuladores EXPORTEN la replica a:

– VHDL o VERILOG: Se podrian crear sistemas como el Minimig o el One Chip MSX on the fly
– GERBER: Crear las PCBs de los sistemas emulados, con una lista de chips a soldar y todo el soft necesario para programar las roms, pics, gals…

Todo esto, por supuesto tiene su desventaja, y es la enorme potencia que hace falta para llevar esto a cabo. DICE ahora mismo solo emula el Pong, y en un x86 a 3000mhz lo hace a unos 15fps, asi que imaginad un sistema mas moderno y potente como la n64… pero tiempo al tiempo…

Asi, creo que este va a ser el futuro. No ya emuladores hiper precisos, si no emuladores llevados al plano electrico, que en ultima instancia permitiran recrear la maquina emulada en la vida real.

Sumadle a todo esto una impresora 3d y vereis a lo que me refiero

Cassette en el IBM PC

Para todos aquellos que llevamos tiempo con la plataforma PC, ya sea en su version mas clasica, comunmente llamada PC/XT, o los posteriores los PC/AT, siempre hemos asumido que su sistema de almacenamiento principal es el disco, ya sea rigido o flexible.

Esto podria no haber sido asi, como veremos a continuacion.

Un poco de historia

A finales de los años 70 se estaba viviendo una autentica revolucion informatica; los ordenadores estaban empezando a entrar en las casas…

Lo que nunca uno se podia imaginar, que esas maquinas que en tiempos ocupaban salas enteras y necesitaban de ingentes cantidades de energia para funcionar, ahora gracias a los avances en la electronica daban el paso para convertirse en un electrodomestico mas.

IBM era consciente de esto, y si no queria perder el tren tenia que ponerse las pilas rapidamente. Asi, en pocos meses, usando piezas comerciales, un bus similar al S-100, el estandar de por entonces, un procesador con bus de 8 bits… terminaron el diseño de su equipo para competir en el mercado domestico. Habia nacido el IBM PC 5150.

El PC original, ligerito y comodo, para andar por casa xD

La idea era reducir costes al maximo, y asi, en su configuracion mas economica, el PC no tendria ni monitor ni disketera, usaria la TV domestica como monitor, y un cassette estandar como sistema de almacenamiento.

La cruda realidad

Aun asi, el alto precio (1500$ de 1981 para un PC con 16k de ram) hizo que el publico eligiera otras alternativas de la competencia, como el Apple 2 o el TRS-80 de Radioshack.

Este varapalo hizo replantearse el diseño a IBM, que con su renombre, decidio enfocar el PC hacia la empresa, haciendo que su siguente modelo, el 5160 (PC/XT) ya no dispusiera del puerto de cassette.

El resto, como puede decirse, es historia, pero siempre es curioso ver como una plataforma nace y va evolucionando, perdiendo por el camino algunos elementos que no pudieron superar la ‘seleccion natural’.

Aqui os dejo un ejemplo de carga desde cassette en una placa original del IBM 5150:

Verde 3.0

Acabo de terminar de añadir soporte para la emulacion de varios monitores mas en VERDE.

VERDE es un programa que simula en un PC con VGA un monitor fosforo verde, ambar… en los modos CGA. Aqui se pueden ver unos ejemplos:

Sin Verde

Sin Verde

Con Verde (fosforo verde)

Con Verde (fosforo verde)

Con Verde (fosforo ambar)

Con Verde (fosforo ambar)

Descarga aqui

Zet processor

Acabo de recibir mi placa Altera DE1, una placa de desarrollo FPGA:

Altera DE1

Altera DE1

Quizas conozcais proyectos tales como el One Chip MSX o el Minimig, cuyo objetivo es recrear en placas FPGA el hardware de un ordenador MSX o Amiga respectivamente; pues bien, una de las grandes bazas de la DE1 es que puede hacer funcionar estos dos proyectos, asi como otros que estan en desarrollo. Concretamente yo la voy a usar de forma mayoritaria con Zet processor , una implementacion de un PC/XT con VGA.

He aqui un video que he hecho mostrando su funcionamiento jugando al juego GODS:

Espero en un futuro aprender mas de las FPGAs y su programacion, asi como empezar a hacer mis propias implementaciones 🙂

World Tour Golf

En el hoy ya lejano 1985, una joven compañia llamada Electronic Arts decidio crear su segundo juego de deportes, siguiendo la estela de su exitoso  Dr. J and Larry Bird Go One on One.

Para ello creo un equipo liderado por Paul Reiche III, programador de renombre y que a mas de un fan de Star Control le sonara 😉

World Tour Golf

World Tour Golf

Asi nacio World Tour Golf, un juego destaca por ofrecer una simulacion de Golf realista, sobre todo teniendo en cuenta la fecha en la que fue lanzado.

En ella podiamos crear jugadores, editar sus caracteristicas, si somos diestros o zurdos; nos influian eventos fisicos tales como el viento o la inclinacion del terreno, y lo que para mi es su mejor baza: nos permiten editar los hoyos.

A ver si esta vez no terminamos en el bunker...

A ver si esta vez no terminamos en el bunker...

Estas caracteristicas, y en definitiva, lo divertido de su desarrollo (vease las bromas a lo largo de todo el juego), hacen de este un titulo realmente recomendable para pasar una tarde entretenida con los amigos 😉

Un tiranosaurio en el green!?!

Un tiranosaurio en el green!?!

Video del juego:

Como nota especial, comentar el porque de haber empleado capturas de la version CGA, y el haber usado el simulador de monitor ambar.

Efectivamente, este juego tiene una version EGA/Tandy a 16 colores, mucho mas vistosa que la CGA mostrada aqui:

Golf en 16 colores!

Golf en 16 colores!

El motivo de haber usado la combinacion de ambos (CGA y simulador) es porque asi es como disfrutamos en su dia de este juego de forma mayoritaria. Casi nadie poseia por aquel entonces una tarjeta EGA, y mucho menos un monitor en color.

El simulador de monitor fosforo ambar es un tema que creo puede ser interesante y discutire en proximos posts.

Espero que os haya gustado. Un saludo!

Sonido digital en el PC-Speaker

Como ya comente en el post anterior, hoy voy a hablar de como es posible reproducir sonido digital por el PC Speaker.

Ibm PC 5150

Ibm PC 5150

Cuando IBM estaba diseñando su modelo 5150, el primer PC de la historia, lo que tenia en mente era reducir costes y lanzar un computador economico y competitivo para la empresa:

Lotus123

Sonido? Un pitido para los errores y gracias!

Asi, el incluir en el mismo algun tipo de hardware de sonido especifico no estaba contemplado, eso subiria los costes de produccion.

En su lugar, conectaron un altavoz al timer interno, y mediante programacion del PIC 8254 para que generara una onda cuadrada que proporcionara sonido. Un sonido simple, realmente simple, pero que seria de sobra suficiente para indicar cuando hemos metido mal una celda de nuestra hoja de calculo.

5v y 0v, quien necesita mas?

5v y 0v, quien necesita mas?

Poco a poco, el PC fue acaparando mercado y con el fueron creciendo las necesidades ludicas del mismo. Como cabia esperar, sus capacidades sonoras estaban completamente desfasadas ya en su tiempo, limitandose a una serie de pitidos que para muchas personas resultaban poco menos que molesto:

Musica Silpheed

Con el tiempo fueron refinando el uso de este ‘pitador’, creando asi composiciones tan decentes como la intro del Maniac Mansion:

Maniac Mansion

pero aun asi, no estaban ni de lejos a la altura del resto de plataformas de juegos.

Con estas limitaciones en mente (un altavoz que solo permite dos estados, 0 y 5v, onda cuadrada), a alguien se le ocurrio una idea realmente ingeniosa.

Si pensamos en la mecanica de un altavoz veremos que este no es mas que un electroiman conectado a una membrana que vibra cuando se le aplica una corriente electrica en funcion del voltaje de la misma en un momento dado. En otras palabras, un PC Speaker se reduce a dos estados:

  1. 0v, en reposo. La membrana esta en su posicion original.
  2. 5v, en tension. La membrana esta en la posicion de tension maxima.

Pero, ¿que ocurre con los estados intermedios? El PC no es capaz de mostrar los estados 1v, 1.5v, 2v, 2.5v … por la limitacion del hardware en si. Pero el altavoz si 🙂

Solo hay que medir el tiempo que tarda la membrana en pasar de reposo a tension total y dividirlo en fracciones para representar esos estados que necesitamos.

Asi, reprogramando el timer, haciendo que nos avise (saltando una Interrupcion hardware) cada una de esas fracciones, conseguiremos poner el valor especifico en cada momento dado para que el resultado no sea otro que un sonido digital.

El resultado creo que no puede ser mejor:

Aspar GP Master

No obstante esta forma de reproducir sonido tiene sus desventajas, y es que el tiempo de CPU necesario para calcular el momento exacto en el que reproducir cada muestra hace que quede poca potencia de proceso para el resto de tareas, tales como mostrar cosas por pantalla.

Aun asi, podemos ver autenticas joyas de la programacion, que hacen uso intensivo de esta tecnica, y no por ello ralentizan la ejecucion del programa, como comentaba en el anterior post del Digger.

Con la llegada de sistemas mas potentes (>8mhz) se pudo emplear esta tecnica de sonido de forma mas generalizada, muestra de ello es que algunas empresas decidieran hacer suya esta tecnica y patentandola. Access Software llamo a esta tecnica ‘Real Sound’, y lo lanzo con su nuevo juego, Crime Wave:

Sea como fuere, las tarjetas de sonido ya estaban en el mercado, con lo que el ‘Real Sound’ paso casi desaparcebido, siendo la tecnica usada durante algunos años mas sin problemas.

Digger

Hoy le toca el turno a uno de los pesos pesados en cuanto a vicio y jugabilidad en un XT: DIGGER

Este juego nos tuvo enganchadisimos en su dia, y es que lo tiene todo, buenos graficos, colorido, jugabilidad, buen sonido…

El vicio hecho juego

El vicio hecho juego

El colorido es digno de mencion, no hay que olvidar que todo se consigue cambiando la paleta CGA para conseguir efectos que dificilmente experimentariamos si solo usaramos los tipicos 4 colores que esta grafica permite en 320×200.

Y yo con estos pelos!

Y yo con estos pelos!

Sin duda el plato fuerte del juego es lo adictivo del mismo en si; pero este no nos dejaria tan buen sabor de boca si obviaramos su fantastico sonido.

El PC no dispone de ningun dispositivo especifico para audio, unicamente un altavoz que permite representar una onda cuadrada en dos estados: 5v y 0v; asi pues, como es posible esta musica y efectos de sonido??

Este es un tema que pienso tratar en mi siguente post, ya que lo merece 🙂

Dos pajaros de un tiro!

Dos pajaros de un tiro!

El juego cuenta con una legion de seguidores, que ni cortos ni perezosos, remasterizaron el original, dotandolo de graficos VGA de alta resolucion y haciendo el codigo portable. Todas las versiones (hay versiones incluso para xbox,dreamcast..) se pueden encontrar en http://www.digger.org/ .

Happy Diggin’!

Round 42

Bien, pues con este post doy por inaugurado este blog sobre retroinformatica en general y sobre PCs clasicos en particular 🙂

Voy a comenzar la andadura por el hablando sobre Round 42, un clasico de entre los clasicos:

El juego viene a ser el clasico matamarcianos de toda la vida, pero sus 42 pantallas prometen hacernos sudar mientras por nuestros monitores CGA desfilan una interminable horda de enemigos a cual mas dificil de vencer.

El juego, ademas de los tipicos powerups, tenia la posibilidad de mover nuestra nave por toda la pantalla, elegir el punto de ‘resurreccion’ de nuestro personaje tras perder una vida… detalles que hacen aun mas interesante este titulo:

No es una estrategia recomendable...No es una estrategia recomendable…

Otro de sus puntos fuertes es el colorido,  un modo de video especial de la tarjeta CGA permite representar 16 colores en lugar de los 4 a los que nos tenia acostumbrados:

16 colores

16 colores 🙂

Estos factores, unidos a una jugabilidad envidiable, hicieron que este juego fuera uno de los mas viciantes en sus dias; y es que lo maravilloso de su codigo permitio que estos coloristas graficos pudieran moverse a toda velocidad hasta en los PCs mas antiguos de la historia.

Completamente recomendado a todos los que quieran pasar un rato divertido y viciante 🙂

Round42 funciona perfectamente bajo DOSBOX configurando el modo de video CGA