Deconstruyendo las intros de 4k en PC.

Más
1 año 2 meses antes - 1 año 2 meses antes #6094 por fefal64
fefal64 Publicó: Deconstruyendo las intros de 4k en PC.
Todo comienza por un comentario de Almighty God que nos ponía al tanto de la intro de 4k ganadora de la Deadline (Berlin) 2016: Rhodium by Alcatraz .

Lo natural es que partiendo de que se supone que son un máximo de 4096 bytes, cuando cualquiera ve el vídeo en Youtube de la intro se le afloja a uno el cinto y se caen los pantalones hasta los tobillos.

Cómo es posible que con 4k's se pueda generar una experiencia visual de 3min. 10seg. en la que:
  • Puede oírse sonido sintetizado estéreo.
  • Vale que sea más dificil de bailar que la música del telediario, pero no es una composición aleatoria disparatada.
  • Aparecen en pantalla efectos especiales que viene a ser un gustazo para los ojos (traducción libre de "eye candy").
  • Vale, puede que los fractales den su juego, pero ese nivel de detalle, esos vértices, esos polígonos, esos shaders... ¿cómo con 4k's pueden siquiera inicializar la GPU?

En resumen: ¿cómo rayos con 4 kiloñoñas puede obtenerse un resultado como ese?

¡Pues hay que dejarse de preguntar y ponerse a golifiar, que son sólo 4k's! (en teoría).

En esta entrada del foro voy poniendo las cosas que voy averiguando por si a alguien le interesa mirar el camino de descubrir este misterio.

P.D.: obviamente no es la única intro de 4k para PC con estas características. Basta con echar un vistazo en la sección 4k para Windows en Pouët para darse cuenta uno de que esto es una infección.

$fefa
Última Edición: 1 año 2 meses antes por fefal64. Razón: Redacción chunga.
El siguiente usuario dijo gracias: manolopm

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 año 2 meses antes - 1 año 2 meses antes #6095 por fefal64
fefal64 respondió el tema: Deconstruyendo las intros de 4k en PC.
Primer paso: descargar la intro y ver si de verdad son 4k's.

Vaya... pues si lo son. El contenido del archivo zip es este:
Archive:  atz-rhodium.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
     1468  10-01-2016 14:49   Virgill_Alcatraz - Rhodium.nfo
     4083  10-01-2016 14:31   Virgill_Alcatraz - Rhodium_1024x768.exe
     4094  10-01-2016 14:18   Virgill_Alcatraz - Rhodium_1280x720.exe
     4088  10-01-2016 14:45   Virgill_Alcatraz - Rhodium_1920x1080.exe
     4088  10-01-2016 14:35   Virgill_Alcatraz - Rhodium_640x480.exe
    80907  09-29-2016 18:36   Virgill_Alcatraz - Rhodium_Screenshot1.jpg
   116367  09-29-2016 18:35   Virgill_Alcatraz - Rhodium_Screenshot2.jpg
   100714  09-29-2016 18:35   Virgill_Alcatraz - Rhodium_Screenshot3.jpg
    90410  09-29-2016 18:34   Virgill_Alcatraz - Rhodium_Screenshot4.jpg
    88150  09-29-2016 18:35   Virgill_Alcatraz - Rhodium_Screenshot5.jpg
---------                     -------
   494369                     10 files

Primera curiosidad: tiene varios archivos ejecutables en la que cada uno muestra la intro para un tamaño de pantalla diferente. ¡No hay que gastar bytes en analizar los parámetros de la linea de comando!

Otra observación importante: ninguno de los archivos ejecutables supera los 4096 bytes. Domingo tenía razón; por mucho que nos duela son 4k's.

Metámosle mano, así como el que no quiere la cosa, y echemos un vistazo al interior de los ejecutables. Abro el desensamblador que tengo por aquí a mano y que es una maravilla (versión de evaluación, claro): el Hopper Disassembler v3 (para MacOS en mi caso).

Al ser una versión de evaluación su uso está limitado en el tiempo que está abierta una sesión del programa. Para echar un vistazo sobra.

He aquí el resultado:



Parece que no hay mucho código aquí. :S

¿Dónde está metido el código al que salta esta instrucción?
jmp 0x40008a

Por lo que se ve o soy incapaz de decirle al desensamblador que analice el código ubicado en la dirección 0x40008a, o el desensamblador no tiene esa opción. Probablemente haya que desensamblar una sección de datos.

Así que hay que buscar un desensamblador que lo pueda hacer o que esté documentado cómo se hace. Después de buscar un rato, tiro por una herramienta que seguramente la tengas instalada en tu linux: objdump.

objdump sirve para analizar archivos binarios asociados a programas de ordenador (ejecutables, librerías, código objeto). Tiro de un linux, transfiero el ejecutable de 4k y ejecuto el objdump.

Lo primero es comprobar que el desesamblador furula e intento obtener el mismo desensamblado que el Hooper. La línea de comando es esta:
objdump --start-address=0x5c -D -b binary -mi386 -Mintel Virgill_Alcatraz\ -\ Rhodium_640x480.exe

Y el resultado es este:
Virgill_Alcatraz - Rhodium_640x480.exe:     formato del fichero binary


Desensamblado de la sección .data:

0000005c <.data+0x5c>:
  5c:	53                   	push   ebx
  5d:	31 ed                	xor    ebp,ebp
  5f:	bb 02 00 00 00       	mov    ebx,0x2
  64:	90                   	nop
  65:	be 44 01 40 00       	mov    esi,0x400144
  6a:	6a 01                	push   0x1
  6c:	58                   	pop    eax
  6d:	bf 00 00 42 00       	mov    edi,0x420000
  72:	b1 00                	mov    cl,0x0
  74:	57                   	push   edi
  75:	57                   	push   edi
  76:	eb 12                	jmp    0x8a
	...

Comparando línea a línea son "igualicas, como el difunto de su agüelico".

Mando entonces desensamblar a partir de la dirección 0x8a (se ve que la base es 0x400000), con el parámetro --start-address=0x8a:
0000008a <.data+0x8a>:
  8a:	60                   	pusha  
  8b:	ad                   	lods   eax,DWORD PTR ds:[esi]
  8c:	01 f8                	add    eax,edi
  8e:	74 2c                	je     0xbc
  90:	6a 0a                	push   0xa
  92:	5a                   	pop    edx
  93:	89 14 54             	mov    DWORD PTR [esp+edx*2],edx
  96:	89 54 24 10          	mov    DWORD PTR [esp+0x10],edx
  9a:	ad                   	lods   eax,DWORD PTR ds:[esi]
  9b:	31 ed                	xor    ebp,ebp
  9d:	4d                   	dec    ebp
  9e:	45                   	inc    ebp
  9f:	01 c0                	add    eax,eax
  a1:	72 fb                	jb     0x9e
  a3:	74 af                	je     0x54
...

Bueno, al menos ya tenemos la herramienta para desensamblar cualquier parte del ejecutable. Ahora es cuestión de interpretar el código... pero eso para la próxima entrada, porque tengo que repasar el ensamblador del x86. Donde esté el 6502...

$fefa
Adjuntos:
Última Edición: 1 año 2 meses antes por fefal64. Razón: Typo
El siguiente usuario dijo gracias: txinto, manolopm

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 año 2 meses antes #6096 por fefal64
fefal64 respondió el tema: Deconstruyendo las intros de 4k en PC.
Bueno, tampoco hay que ser tan bruto y es bueno hacer un poco de investigación en paralelo sobre cómo se hacen las intros de 4k. Estamos en la era de la Internete y la gente cuenta cosas y las escribe, y las puede leer cualquiera y en todo momento. No estamos en los 80's ni 90's en lo que todo era inaccesible e íbamos a la velocidad de la publicación de revistas, libros y como muy rápido FidoNet.

Por lo visto hay herramientas y frameworks para hacer intros de 4k (y de más núcleos de ferrita). Nombro dos particularmente interesantes:
  • 4klang (el navegador se asusta y no quiere entrar a la web; si estos saben hacer lo que hacen con 4k, yo también tendría miedo) - se trata de un sintetizador de música por software para facilitar la composición para intros de 4k. Siendo una intro de Alcatraz la que estamos analizado, seguro que lo usa. Ojo que por lo visto también es un instrumento virtual VSTi
  • Crinkler - un compresor de archivos ejecutables para quitar esos bytes de más que siempre nos sobran ahí donde nosotros sabemos.

Váyase ya, aunque aun quede más.

Hay más herramientas y frameworks pero este camino paralelo lo paro aquí. Me muero por probar el 4klang (¿funcionará con el Garageband?)

$fefa
El siguiente usuario dijo gracias: txinto, syntetiko, manolopm

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 año 2 meses antes #6097 por syntetiko
syntetiko respondió el tema: Deconstruyendo las intros de 4k en PC.
Excelente post!! :)

Entre mis favoritas:

Neuron de TBC & Loonies

Elevated by RGBA and TBC



saludos,
El siguiente usuario dijo gracias: fefal64

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 año 2 meses antes #6103 por Almighty God
Almighty God respondió el tema: Deconstruyendo las intros de 4k en PC.
Muy interesante FEFA, espero la próxima entrega ;)

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 año 2 meses antes #6104 por Almighty God
Almighty God respondió el tema: Deconstruyendo las intros de 4k en PC.
Esto te puede interesar, entre otros:

El siguiente usuario dijo gracias: fefal64

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 año 2 meses antes - 1 año 2 meses antes #6108 por fefal64
fefal64 respondió el tema: Deconstruyendo las intros de 4k en PC.
La presentación está buena, pero las transparencias no se leen nada bien.

El fulano habla primero de las herramientas de propósito específico, que se utilizan para:
  • convertir formatos
  • generar texturas
  • editores de música, algunos independientes y otros como plugins VSTi que se pueden utilizar con aplicaciones compatibles
  • prototipado de shaders, como por ejemplo rendermonkey

Por otro lado están las herramientas maestras, que son un entorno integrado que contienen todo lo necesario para hacer intros y demos, y que se exportan al formato final ejecutable. Suelen estar orientadas a gestionar una línea temporal, en la que se van introduciendo transiciones. El ejecutable final debe incluir un motor de demos, por lo que a veces el resultado no sirve para intros de 4K sino para intros de más envergadura.

Otra posibilidad es no utilizar herramientas y ciertos puristas lo prefieren. En el vídeo se comenta qué ventajas tiene, entre ellas la flexibilidad de cambiar de shaders sobre la marcha.

Hace un repaso muy rápido sobre herramientas que ya he mencionado en una entrada anterior:
  • Crinkler - el compresor de ejecutables
  • 4klang - el sintetizador
  • GNU Rocket - una herramienta para hacer scripting. Es como un tracker de música pero que en vez de controlar notas, controla parámetros de la intro. Entiendo que se utiliza entre otras cosas para controlar las transiciones.

Luego plantea la idea de construir tu propia herramienta maestra para las demos e intros de tu grupo. Habla de las ventajas, y el resto de la presentación habla de la que ha hecho y de cómo la usan.

Hasta aquí el minuto 19. A partir de entonces describe la herramienta y pone un ejemplo de uso en una intro. La cosa es que se ve tan chungo y hay tanta a información en la pantalla que no aguanté el resto del vídeo, además de que cuenta las historias de la herramienta. Para desarrollar una intro a partir de aquí la charla está buena, pero se necesita tener la herramienta delante para entender de qué está hablando, y por el momento lo aparco hasta que haga falta.

Apuntó echarle un vistazo a GNU Rocket.

Gracias Don!

P.D.: Por lo visto RenderMonkey (de AMD) y FX Composer (NVIDIA) están en las manos del señor (léase abandonadas). GLSL Hacker lo mencionan por ahí y la página web dice que en efecto es para hacer demos, y que está también para RaspberryPi! Habrá que echarle un visto.

$fefa
Última Edición: 1 año 2 meses antes por fefal64. Razón: Más info sobre RenderMonkey y otros.
El siguiente usuario dijo gracias: manolopm

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 año 2 meses antes - 1 año 2 meses antes #6109 por fefal64
fefal64 respondió el tema: Deconstruyendo las intros de 4k en PC.
Gracias syntetiko. Elevated fue la siguiente que vi después de Rhodium y mi reacción fue acercar el ojo a la pantalla. Sabía de la existencia de fractales y algoritmos para generar terrenos programáticamente, pero no sabía que entraban en 4K's con nieve, agua y algo de chufla. Estuve un rato mirando a ver si salía Heidi y su abuelo. XD

$fefa
Última Edición: 1 año 2 meses antes por fefal64. Razón: Escribir en un iPad con la pantalla rota es complicado.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 año 2 meses antes #6110 por syntetiko
syntetiko respondió el tema: Deconstruyendo las intros de 4k en PC.
Elevated es realmente impactante, además lo interesante es que te puedes bajar todo el código fuente del proyecto en Visual Studio y de paso también la música en mp3. Sinceramente meter todo eso en 4k con Crinkler me parece pura magia, aunque los programadores de la demo sean los propios padres de la criatura.

Otro tema que me deja descompuesto es la versatilidad de 4klang cuando ves tutos como éste


saludos,
El siguiente usuario dijo gracias: fefal64

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Más
1 año 2 meses antes #6111 por Lenko
Lenko respondió el tema: Re:Deconstruyendo las intros de 4k en PC.
Me quedo a la espera de próximos capítulos de esta investigación, que ni Hercules Poirot.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Tiempo de carga de la página: 0.807 segundos

© Canarias Go Retro, 2016