# La madre de la compresión



## Andres Cuenca (Oct 2, 2005)

Hace poco me enviaron un archivo que contenía mas de 5 minutos de animación grafica en 3D, en tan solo 64KB, si!! no me equivoco casi 64000 Bytes.

Según la explicación que dan al final del video, comprimieron 1.9GB a solo 64KB ósea una relación de compresión de 30000 a 1. A mi me parece sorprendente, pero se los dejo a ustedes para que lo juzguen.


----------



## Marcelo (Oct 2, 2005)

Cuando corro el archivo me dá un error que dice "dx error".
Supongo que es un error de Directx. Sabrás si hay que correrlo que alguna versión específica, yo tengo Directx 9 (que por cierto es bien problemático) que se instala a juro con el SP2 de Windows XP.
Creo que para correrlo se necesita el Directx 8.

Saludos,
Marcelo.


----------



## Andres Cuenca (Oct 2, 2005)

Marcelo yo utilizo windows 98, y nunca me ha dado problema, me imagino entonces que debe ser por conflictos con la versión de directX que tienes instalada.


----------



## caliche (Oct 2, 2005)

No me funciono en XP, pero en win98 si me funciono. En win98 tengo instalado el directX 9. 

También estoy sorprendido, como harán ese tipo de animaciones en archivos tan pequeños?


----------



## Marcelo (Oct 2, 2005)

BUAAAA!!!! yo la quiero ver.....

Voy a reinstalar el SO a win98... ni loco.

Ya veré que puedo hacer.

Saludos.


----------



## Guest (Oct 2, 2005)

Que buena esa animación!!! 

Para ser un archivo tan pequeño creo que estoy impresionado. Por ahí tengo unos videos de música de la nueva era con imágenes muy parecidas, y cada video de casi 20 minutos pesa como 300MB, y pensar que esta animación solo ocupa 64KB. 

No será que hay gato encerrado?


----------



## Andres Cuenca (Oct 2, 2005)

fer dijo:
			
		

> No será que hay gato encerrado?



A mi también me gustaría saber como hicieron para hacer esta animación en un archivo tan pequeño, me imagino que en el archivo solo hay códigos que son interpretadas por las APIs del DirectX. Es decir el archivo contiene el código que compila el directX.

Será esperar a que alguien que sepa como hacen esto nos explique.


----------



## MaMu (Oct 4, 2005)

Estuve revisando y traceando la aplicacion, y realmente me ha logrado sorprender. El archivo de 64K tan simple como un segmento, tiene incluido el codigo de compilacion en run time, de directivas de DirectX, es decir la animación se forma en la computadora en tiempo de ejecucion. La he probado en XP con SP2 y directx 9.0c, cambiando la compatibilidad a windows 95. Utiliza el mismo metodo poligonal que un scr modelo. He truncado el engine de los screensaver (una salvedad del directx) y la aplicacion deja de responder, clavandose en la cuarta posicion del volcado a la pila. (ECB +4). Me sorprende la idea de generar aplicaciones que compilen y carguen en tiempo de ejecucion, con simples directivas a directx por medio de las API. (valores de funciones bastante complejas, com hasta 8 parametros de respuesta en Dx). A groso modo, puede interpretarse como un salva pantallas en tiempo de ejecucion, que segun he monitoreado se comporta como tal. 
Recuerdo haber tocado directx desde delphi, y a pesar de ser bastante complejo, tiene le ventaja de no necesitar incluirse archivos y librerias puesto que estos se encuentran en cualquier SO, con lo cual se necesitara un ejecutable de muy poco peso. El archivo no contiene ningun res, tan solo directivas de compilacion en runtime y un excelente manejo de interrupciones (Api para el que asi prefiera). 

Saludos


----------



## Marcelo (Oct 4, 2005)

MaMu, explícame bien como hicistes para hacerlo funcionar en WinXP, porque yo intenté compatibilidad Windows95, Win98/Me, Reproducir solo en 640x480, deshabilité los temas visuales, Instalé el Directx9c (el último) y no logré hacerlo arrancar. Me sigue saliendo el error "dx Error".

Por allí encontré otro archivo de 64K pero de un tema que no se puede publicar por acá (lo digo por el título, no se como es), el cual debe hacer lo mismo pero con otro tema pero necesita Direct9. 

Yo he hecho algunas pruebas con Directx 8.1 usando las API y la verdad es fabuloso lo que se puede hacer con algunas líneas de programación, y te estoy hablando de Visual basic. Lo que pude entender es que el Directx y el DirectShow es todo un engine completo que es capaz de generar por si solo con sus librerías: animaciones, renderizaciones incluyendo texturas, sombreado, rotaciones, morphing, warping y un montón de cosas más con tan solo indicárselo y esto sin contar las facilidades de sonidos que tiene. También maneja OpenGl y D3D, por lo que el desarrollo depende de la tarjeta de video que se tenga. 

Como no he podido ver la animación, me imagino que el programa en sí no guarda absolutamente nada del video, sino solo las directivas de las API y la data de las coordenadas de los polígonos. Las textura las pudiera generar el mismo directx.

Saludos y a ver si logro correrlo.

Marcelo.


----------



## Marcelo (Oct 4, 2005)

Bueno, al fin lo pude correr. Desinstalé  el Directx9, hice un escaneo con RegFixer, limpié el registro y luego  reinstalé Directx9c.

Les anexo el otro archivo de 64K que les había comentado para que lo vean. Les recuerdo que necesita Directx 9

El Direct9c lo pueden bajar de aquí (la última versión): 

http://www.softwarepatch.com/windows/directx.html

(Si no, traten desde Microsoft a ver si pueden)

Y si luego de instalarlo tienen problemas o lo quieren quitar, pueden buscar el desinstalador de DX9 aquí (para Windows Xp, no se si funciona en otros SO pero creo que no):

http://www.3dcenter.org/downloads/directx-dx9uninstaller.php

Nota: El título del archivo no es el original.


Saludos,
Marcelo


----------



## Andres Cuenca (Oct 4, 2005)

Marcelo, ahora es a mi a quien no me funciona, en win98 no pasa de la barra de carga, y en winXP ni siquiera se ejecuta. Creo que la versión del directX para que funcione debe ser la 9c o superior.


----------



## Marcelo (Oct 4, 2005)

Tienes el D9 en WinXP?. A mi me funcionaron las dos cuando instalé el D9c.

Con cada nueva versión de Directx, le cambian el nombre a las librerías (Directx6.DLL, Directx7.DLL, etc), a fin de que se genere una nueva clave de registro y no se eliminen las anteriores referencias a DLL viejas. A veces ocasiona que existan más de una GUI en el registro de Windows marcando a una librería auxiliar de funciones que si tiene el mismo nombre para distintas versiones, pero que no contienen las mismas funciones que las versiones nuevas.( no se si me expliqué)

Cuando esto sucede, los programas arrancan con una versión nueva pero llaman a librerías más viejas del Directx y empiezan a mezclar referencias. Es decir, se hace un pasticho en el registro. (Esto si es difícil de explicar....:x 

Por eso fué que usé el RegFixer.

Creo que actualizando te funcionaría, pero te voy a advertir que hay por allí un montón de blogs que comentan los problemas de runtimes que tiene la versión 9 y posteriores de estos drivers. Así que es "risky" una actualización, por eso "linkee" el desinstalador en el post anterior.

Saludos,
Marcelo.


----------



## Andres Cuenca (Oct 4, 2005)

Marcelo voy a utilizar el programa que utilizaste para desinstalar el directX, y lo reinstalare de nuevo. Seguro que esta pasando lo que tu dices.


----------



## Marcelo (Oct 4, 2005)

Si vas a reinstalar el 9 te recomendaría que antes te bajaras la versión c del link que puse antes pues debe tener algunos bugs ya corregidos.

Saludos,
Marcelo.


----------



## MaMu (Oct 5, 2005)

Marcelo, para hacerlo andar solo cambie la compativilidad a win95 y voila!, ya que tengo instalado en el xp, el software de nForce de mi tarjeta nVidia, la cual me mantiene actualizado el DirectX ( es que tengo unos cuantos juegos de pc instalados  ). Estuve revisando mas abajo de las Api, en las funciones de video a nivel interrupciones, pero son mas de 1500!!!!, eso explica claramente porque se demoran 2 años mas de 500 programadores en crear un buen juego de PC, ya sea por DirectX u OpenGL.

Saludos


----------



## Marcelo (Oct 5, 2005)

Lo de la compatibilidad lo probé y no me funcionó. Le puse Compatibilidad Win95, Win98/ME, Nt4 y 2000 y nada. Luego empecé con la reproducción forzada a 640 x 480 y nada. Por último le deshabilité los temas visuales de XP y adivina...  nada, y hasta lo arranqué en modo a prueba de fallos a ver y siguió nadando.

Solo después de la reinstalación pude correr diréctamente ambos  archivos sin necesidad de cambiar la compatibilidad. ¿Como es posible que cada uno tenga que hacer algo distinto para que funcione?.....

Cuando pasan estas cosas es que me doy cuenta que esto de las computadoras, programación, etc. todavía está en la edad de hierro (o será en la de piedra?). 

Me gustaría ver el día en que podamos encender las computadoras como si fuera un televisor, sin esperar a que se cargue nada y programarlas hablándoles por un hueco. Por ahora... SciFi.

Y con respecto a los juegos y a Directx, Direct 3D, OpenGl, etc... ni te comento. Hay tipos que lo único que hacen es dedicarse a eso todo el día, todos los días y comen polígonos, así es que imagínate si será complicado.

De los que tengo a montones son los de tirotéos en  primera persona y los de tercera persona (como tomb raider, por ejemplo), que son los que me gustan. Los de aventura me pudren un poco y los arcade los uso para matar tiempo.

Saludos,
Marcelo.


----------



## MaMu (Oct 6, 2005)

Marcelo dijo:
			
		

> Solo después de la reinstalación pude correr diréctamente ambos  archivos sin necesidad de cambiar la compatibilidad. ¿Como es posible que cada uno tenga que hacer algo distinto para que funcione?.....



Respuesta muy simple : Microsoft Windows.


----------



## cox (Oct 18, 2005)

Amigos, este es mi primer post, un saludo a todos 

Bueno, si estan impresionados con esas animaciones, les comento que se llaman "demos" y en europa estan a full haciendo exposiciones y demas.

Es esta ocasion quiero compartir con uds. esto que hace rato lo tengo en mi poder y que como estoy "remodelando" je mi pag, se lo adjunto para que lo vean.

No digo que es porque es sorpresa...

Recomendacion: ejecuten este programa con alguna almohada cerca para no lastimarse cuando se caigan de espaldas, o un medico en todo caso

Saludos nuevamente, espero lo disfruten


----------



## julio_ (Mar 7, 2006)

jajajaja ...

que buena animacion ... pero mejor esta la musica.... lo demas queda de lado.... mentira ....


----------



## maunix (Mar 16, 2006)

MaMu dijo:
			
		

> Recuerdo haber tocado directx desde delphi, y a pesar de ser bastante complejo, tiene le ventaja de no necesitar incluirse archivos y librerias puesto que estos se encuentran en cualquier SO, con lo cual se necesitara un ejecutable de muy poco peso. El archivo no contiene ningun res, tan solo directivas de compilacion en runtime y un excelente manejo de interrupciones (Api para el que asi prefiera).
> Saludos



Mamu creo que debiste ser mas puntual. DirectX es de Microsoft y solo se encuentra en los Sistemas Operativos de Microsoft más modernos.
De hecho win98 venia con directX 5, y los win95 ni siquiera conocian de directX

En Linux y otros sistemas operativos, no existe el concepto de directX.  De hecho directX surgió para competir con OpenGL...

Saludos


----------



## scofmb (Ago 12, 2006)

Ese archivo es una Demo. Estos generan las texturas al iniciar el programa basado en ciertos patrones, etc.
http://es.wikipedia.org/wiki/Demoscene
http://www.scene.org/


----------



## Andres Cuenca (Ago 12, 2006)

scofmb dijo:
			
		

> Ese archivo es una Demo. Estos generan las texturas al iniciar el programa basado en ciertos patrones, etc.
> http://es.wikipedia.org/wiki/Demoscene
> http://www.scene.org/



Gracias por la aclaración y por los enlaces.

Exitos.


----------



## DOSMETROS (Abr 5, 2018)

Uy que terrible ! 

Esos videos y audio con sólo 64k  en el año 2005 . . .  *hace 13 años* 

Queda absolutamente claro que los MegaGigaTera , son el engaño para hacernos comprar máquinas y software . . . 

[El tercero no puedo verlo]


----------



## Andres Cuenca (Abr 5, 2018)

13 años en este mundo informático es mucho pero mucho tiempo, lo cierto que después de volverlo a ver me quedo como la primera vez.


----------



## DOSMETROS (Abr 5, 2018)

Yo no lo había visto y me parece *reloco* , hoy con los 64k escribirían el link de descarga del archivo de varios varios Megas

P.D.: Pudiste ver el tercero ?


----------



## Andres Cuenca (Abr 5, 2018)

El tercero no lo logré ver en ese entonces y tampoco ahora.


----------



## DOSMETROS (Abr 5, 2018)

Oka , estará dañado


----------



## FrancoPez (Abr 5, 2018)

Yo recuerdo haberlos probado en su tiempo y me funcionaron los tres, y ahora que los vuelvo a probar, también me funcionan todos, el tercero es un juego tipo FPS que me recuerda mucho a Quake.


----------



## Andres Cuenca (Abr 5, 2018)

Por el nombre del archivo y lo que nos cuentas en youtube me lleva a este video:






@FrancoPez, ¿Es ese?


----------



## FrancoPez (Abr 6, 2018)

Ese es exactamente, por el tiempo no llegue muy lejos ahora y tampoco recuerdo haberlo terminado la primera vez que lo jugué. Es increíble lo que se hizo en 95KB


----------



## D@rkbytes (Abr 6, 2018)

Se trata de una aplicación que hace uso de DirectX para crear las animaciones, sistema muy usado para crear vídeo juegos.
DirectX tiene la característica de poder crear animaciones en 3D con un renderizado muy rápido y usando pocos recursos.
Hace algún tiempo subí por aquí un ejemplo sobre su uso.
El truco sobre lo ligero del programa, es porque está comprimido usando dos compresores para ejecutables.
El más común de todos (UPX) y uno un poco más complejo. (Kkrunchy)
La combinación de dos compresores fue realizada engañando al primero modificando la cabecera PE.

Aquí podemos ver que usa las librerías DirectX (Direct3D y DirectSound):

En esta parte detecto el primer compresor (Firma de cabecera para Kkrunchy):

Después de descomprimir al primer packer, analizo y veo que hay otro compresor:

Desempacando este último, ya puedo ver con qué compilador fue creado el ejecutable:

Después de esto el archivo queda con su tamaño original:

Eso es todo, amigos.


----------

