Página 1 de 5

Nyan Cat para PCs clasicos

Publicado: 17 Sep 2013, 18:12
por JoJo
Pues tal como dice el titulo, he programado la animacion del Nyan Cat para funcionar en PCs clasicos:



Funciona en cualquier PC con 300kb de memoria libre y tarjeta CGA.

Mas info y descargas aqui:

http://www.360k.es/?p=328

Re: Nyan Cat para PCs clasicos

Publicado: 17 Sep 2013, 19:13
por mcleod_ideafix
¿Y el sonido? ¿Es una Sound Blaster o es el beeper usando PWM?
EDITO: ya he leído la descripción, que es con el beeper :)

Re: Nyan Cat para PCs clasicos

Publicado: 18 Sep 2013, 11:09
por JoJo
mcleod_ideafix escribió:¿Y el sonido? ¿Es una Sound Blaster o es el beeper usando PWM?
EDITO: ya he leído la descripción, que es con el beeper :)


Sep, el beeper con el audio muestreado a 8khz ;)

Re: Nyan Cat para PCs clasicos

Publicado: 18 Sep 2013, 11:21
por mcleod_ideafix
Lástima que sólo haya 16KB en la CGA. De todas formas... ¿podría aumentarse artificialmente la resolución usando caracteres de bloque? Yo porque dibujando soy un negado, pero creo que se podría conseguir un dibujo de 80x50 usando dichos caracteres, si bien con la limitación de que dentro de un bloque de carácter sólo pueda haber dos colores.

Re: Nyan Cat para PCs clasicos

Publicado: 18 Sep 2013, 11:48
por na_th_an
mcleod_ideafix escribió:Lástima que sólo haya 16KB en la CGA. De todas formas... ¿podría aumentarse artificialmente la resolución usando caracteres de bloque? Yo porque dibujando soy un negado, pero creo que se podría conseguir un dibujo de 80x50 usando dichos caracteres, si bien con la limitación de que dentro de un bloque de carácter sólo pueda haber dos colores.


A menos que redefinas el charset (y creo que en la CGA no se puede hacer en modo de texto), no existe un set de caracteres de bloque completos. Sólo hay mitades horizontales y mitades verticales. Se puede usar las mitades horizontales para tener 80x50 "píxels" en modo de texto de 80x25, usando dos colores por celda (convirtiendo cada celda de caracter en 2). El problema es que, aunque la "tinta" puede tomar cualquiera de los 16 colores, el "papel" sólo puede tomar los 8 primeros, ya que el bit 4 del papel indica parpadeo. En la VGA se podía cambiar este comportamiento para poder usar 16 colores en el "papel", pero desconozco si la CGA permitía hacer lo mismo.

EDITO: En efecto, la CGA permite desactivar el parpadeo:

Código: Seleccionar todo

          mov ax,40H
          mov es,ax
          mov dx,es:[063H]  ;get port address of the card
          add dx,4

          mov al,es:[065H]  ;get current value of Mode Select Register
          and al,0dfH       ;mask value by 1101 1111 (to clear bit 5)
          out dx,al         ;disable blink
          mov es:[065H],al  ;save the new setting


En ese caso, sí, se podría tener un display de 80x50 en 16 colores usando el modo de texto y el caracter con ASCII 220 (o 223), y tocando solo los nibbles de los bytes de atributos. http://es.wikipedia.org/wiki/P%C3%A1gin ... 3digos_437

Re: Nyan Cat para PCs clasicos

Publicado: 18 Sep 2013, 11:51
por mcleod_ideafix
Ah! que solo hay mitades... Pensé que había el mismo conjunto de bloques que en el Spectrum...

Re: Nyan Cat para PCs clasicos

Publicado: 18 Sep 2013, 12:22
por antoniovillena
Se puede hacer un truco parecido para tener 160x100x16. Cambiando el registro de altura de celda para que valga 2 en lugar de 8 tendríamos 80x100 en lugar de 80x25. Por otro lado usamos los valores ASCII 221 y 222 para duplicar la resolución horizontal.

Fuente, la Wikipedia.

http://en.wikipedia.org/wiki/Color_Graphics_Adapter

Re: Nyan Cat para PCs clasicos

Publicado: 18 Sep 2013, 13:42
por JoJo
Se puede hacer eso perfectamente que deciis, la gracia esta en 'dibujar' con los asciis. El charset no se puede reprogramar, pero si elegimos el ascii (y el color) adecuado para un grupo de pixeles, el resultado puede ser interesante:

En 40x25 (simulamos 320x200):



En 80x50 (simulamos 640x200):


Yo he decidido no hacer uso de ninguno de estos trucos porque lo que necesitaba era un gran framerate sin usar tiempo de cpu, ya que esta se esta dedicando al sonido. Hacerlo de otra manera hubiera requerido de muchos accesos a memoria de video y por tanto, ralentizando la animacion.

La idea es que funcione bien hasta en un 8088 a 4,77mhz :)

Re: Nyan Cat para PCs clasicos

Publicado: 18 Sep 2013, 14:43
por na_th_an
antoniovillena escribió:Se puede hacer un truco parecido para tener 160x100x16. Cambiando el registro de altura de celda para que valga 2 en lugar de 8 tendríamos 80x100 en lugar de 80x25. Por otro lado usamos los valores ASCII 221 y 222 para duplicar la resolución horizontal.

Fuente, la Wikipedia.

http://en.wikipedia.org/wiki/Color_Graphics_Adapter


Algo parecido hacía el emulador Spectrum de Pedro Gimeno. Usaba un modo de texto de 40 columnas con el registro programado a 1 pixel de altura, y redefinía el set de caracteres para tener cada ASCII representando al patrón binario correspondiente. Así tenía una pantalla gráfica muy parecida a la del Spectrum, y la emulación volaba. En VGA, desde luego, pero es una idea brillante.

Re: Nyan Cat para PCs clasicos

Publicado: 18 Sep 2013, 15:16
por Orkoto
jaja que maravilla!!!!! que ganas de probarlo en el 1512