Deconstruyendo las intros de 4k en PC.

Inicio Foros Mundo Retro Programación Deconstruyendo las intros de 4k en PC.

Este debate contiene 26 respuestas, tiene 7 mensajes y lo actualizó Almighty God Almighty God hace 2 meses, 1 semana.

  • Autor
    Publicaciones
  • #6433
    fefal64
    Adrian
    Participante

    Todo comienza por un comentario de Almighty God que nos ponía al tanto de la intro de 4k ganadora de la [url=http://demoparty.berlin/]Deadline (Berlin)[/url] 2016: [url=http://www.pouet.net/prod.php?which=68239]Rhodium by Alcatraz[/url].

    Lo natural es que partiendo de que se supone que son un máximo de 4096 bytes, cuando cualquiera ve el [url=https://www.youtube.com/watch?v=YK7fbtQw3ZU]vídeo en Youtube de la intro[/url] 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:

    [ul]
    [li]Puede oírse sonido sintetizado estéreo.[/li]
    [li]Vale que sea más dificil de bailar que la música del telediario, pero no es una composición aleatoria disparatada.[/li]
    [li]Aparecen en pantalla efectos especiales que viene a ser un gustazo para los ojos (traducción libre de “eye candy”).[/li]
    [li]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?[/li]
    [/ul]

    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 [url=http://www.pouet.net/prodlist.php?type%5B%5D=4k&platform%5B%5D=Windows&page=1]la sección 4k para Windows en Pouët[/url] para darse cuenta uno de que esto es una infección.

  • #6435
    fefal64
    Adrian
    Participante

    Primer paso: [url=http://xtr1m.com/downloads/atz-rhodium.zip]descargar la intro[/url] y ver si de verdad son 4k’s.

    Vaya… pues si lo son. El contenido del archivo zip es este:

    [code]
    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
    [/code]

    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 [url=https://www.hopperapp.com]Hopper Disassembler v3[/url] (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?

    [code]jmp 0x40008a[/code]

    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:

    [code]
    objdump –start-address=0x5c -D -b binary -mi386 -Mintel Virgill_Alcatraz – Rhodium_640x480.exe
    [/code]

    Y el resultado es este:

    [code]
    Virgill_Alcatraz – Rhodium_640x480.exe: formato del fichero binary

    Desensamblado de la sección .data:

    0000005c :
    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

    [/code]

    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:

    [code]
    0000008a :
    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

    [/code]

    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…

    Attachments:
  • #6436
    fefal64
    Adrian
    Participante

    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:

    [ul]
    [li][url=http://4klang.untergrund.net/]4klang[/url] (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 [url=https://es.wikipedia.org/wiki/Virtual_Studio_Technology]VSTi[/url][/li]
    [li][url=http://www.crinkler.net]Crinkler[/url] – un compresor de archivos ejecutables para quitar esos bytes de más que siempre nos sobran ahí donde nosotros sabemos.[/li]
    [/ul]

    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?)

  • #6437
    syntetiko
    syntetiko
    Participante

    Excelente post!! 🙂

    Entre mis favoritas:

    [url=http://www.pouet.net/prod.php?which=62027]Neuron de TBC & Loonies[/url]

    [url=http://www.pouet.net/prod.php?which=52938]Elevated by RGBA and TBC[/url]

    saludos,

  • #6443
    Almighty God
    Almighty God
    Participante

    Muy interesante FEFA, espero la próxima entrega 😉

  • #6444
    Almighty God
    Almighty God
    Participante

    Esto te puede interesar, entre otros:

  • #6448
    fefal64
    Adrian
    Participante

    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:
    [ul]
    [li]convertir formatos[/li]
    [li]generar texturas [/li]
    [li]editores de música, algunos independientes y otros como plugins VSTi que se pueden utilizar con aplicaciones compatibles[/li]
    [li]prototipado de shaders, como por ejemplo rendermonkey[/li]
    [/ul]

    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:

    [ul]
    [li]Crinkler – el compresor de ejecutables[/li]
    [li]4klang – el sintetizador[/li]
    [li]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.[/li]
    [/ul]

    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.

  • #6449
    fefal64
    Adrian
    Participante

    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

  • #6450
    syntetiko
    syntetiko
    Participante

    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[url=https://youtu.be/wP__g_9FT4M] éste[/url]

    saludos,

  • #6451
    Lenko
    Lenko
    Jefe de claves

    Me quedo a la espera de próximos capítulos de esta investigación, que ni Hercules Poirot.

  • #6465
    Konamito
    Konamito
    Jefe de claves

    ¡Esto sí que es una deconstrucción y no lo que hacen los chefs en la cocina! Gracias por compartirla con nosotros.

    La verdad es que yo tampoco me creía que esas imágenes fueran generadas solamente con 4K, ¡impresionante!

  • #6471
    fefal64
    Adrian
    Participante

    [quote=”syntetiko” post=6110]
    Otro tema que me deja descompuesto es la versatilidad de 4klang cuando ves tutos como[url=https://youtu.be/wP__g_9FT4M] éste[/url]

    saludos,[/quote]

    Siempre tuve curiosidad por saber si combinando las formas de onda del SID y las tres voces se podría sintetizar/imitar el sonido de algún instrumento “realista” (lo de [url=http://es.tio-grandpa.wikia.com/wiki/Tigresa_Voladora_Gigante_Realista]volador gigante[/url] no hace falta). Después de ver el video se me despejan algunas dudas.

    El video comienza vendiéndonos que nos hace falta un sistema de sonido “wapo”… es decir una habitación donde las paredes no reboten el sonido (pienso en cartones de webos o cortinas tupidas de hotel y moqueta), unos monitores de respuesta lineal (dice que algunos empiezan a oírse bien a partir de cierto volumen; los hardcoritos lo saben) o si no quieres despertar a la chiquillada, unos auriculares (abiertos o cerrados… a mi me van los cerrados).

    Habla también de disponer de osciloscopio, analizador de señal y analizador de espectro. En ese momento no se si es una charla de música para demoscene o de prácticas de electrónica…

    Cuando uno piensa que se está pasando de refino, ya empieza a hablar de 4klang (lo pronuncia con algo de acento alemán, ¿verdad?). El fulano (Wayfinder) tiene cierta experiencia en el tema de la música.

    Por lo visto el 4klang es un sistema de síntesis de sonido modular que dispone de 16 voces (no polifónicas).

    Un elemento central del programa es “la pila”, que se parece al sistema de capas de Photoshop o de The Gimp, pero para sonido. En esta pila se van colocado elementos como envolventes ADSR, osciladores, operaciones aritméticas, duplicado de señal para hacer estéreo, desfase y la pava.

    Hace un ejemplo de uso de la pila para generar un sonido simple de una forma de onda de diente de sierra que manipula un fisco para enseñarnos cómo la manipulación afecta a la forma de onda y al sonido. Es ahí cuando entiendo por qué usa el osciloscopio y el analizador de espectro: el sonido entra por los ojos.

    Habla entonces de dos estrategias para hacer sonido:
    [ul]
    [li]explorar – combinando osciladores, operaciones aritméticas y más cositas en la pila, y jugar con los parámetros para encontrar sonidos interesantes.[/li]
    [li]recrear – que consiste en sintetizar un sonido que se quiere imitar.[/li]
    [/ul]

    Es aquí cuando empiezo a flipar, porque el fulano empieza a recrear un sonido de percusión. Nos avisa de que es un proceso pesado y que ocupa mucho tiempo. Aquí es donde empieza a hacer un uso abusivo del osciloscopio para recrear la envolvente del sonido, y del analizador de espectro para aplicar los filtros. Tengo la impresión de estar viendo un programa de televisión de Arguiñano, pero en lugar de sartén y huevos, osciloscopios y osciladores.

    El sonido que quiere recrear proviene de un programa de síntesis de sonidos de batería llamado [url=https://www.sonicacademy.com/products/kick-2]KICK[/url], y se aprovecha de conocer la envolvente y algún otro parámetro.

    Es curioso, pero también usa los mismos trucos que la tele. Empieza a modelar el sonido pero luego el resultado final lo carga de disco. Aun así lo que hace se parece bastante y nos ha enseñado bastante escote ya.

    Por último comento algunas cosas sueltas:

    [ul]
    [li]ahora han hecho 8klang que añade más slots a la pila y creo que 16 voces más.[/li]
    [li]buscando el pack de sonidos que usa en el video (que no encontré) di con [url=https://in4k.github.io/wiki/about]esta página[/url] con recursos para intros de 1, 4 u 8kb que está “bien chida”.[/li]
    [li]En un artículo de la revista electrónica [url=http://www.pouet.net/prod.php?which=55734]Zine #14[/url], hablan del diseño de 4klang. ¡Aun siguen haciendo revistas ejecutables de la escena![/li]
    [/ul]

    (Fin. Ahora a seguir desensamblado).

  • #6497
    I_love_Paula
    I love Paula
    Participante

    Vaya currazo xD

    Sobre el SID y los intrumentos “realistas”, se podrian usar algunos samples y lo mismo da el pego.

    [url=https://livet.se/mahoney/c64-files/Musik_RunStop_Technical_Details_by_Pex_Mahoney_Tufvesson_v2.pdf]Musik RunStop by Mahoney[/url]

  • #6513
    Lenko
    Lenko
    Jefe de claves

    Yo acabo de ver las demos, que hasta ahora no había podido, y he alucinado 😯

    Pero especialmente la demo “Neuron” que puso Syntetiko me ha parecido no solo sorprendente sino preciosa. Increíble.

  • #6518
    syntetiko
    syntetiko
    Participante

    Me alegro de que te haya gustado Lenko, pienso lo mismo, es una obra de arte como casi todo lo que hace Loonies. Podría seguir con mi lista de demos favoritas, es casi interminable… 😉

  • #6521
    syntetiko
    syntetiko
    Participante

    Buscando sobre la programación de los efectos de este tipo de demos he encontrado una [url=https://www.shadertoy.com]web[/url] muy interesante donde Hace un ratito Virgill de Alcatraz ha puesto el código del increíble efecto [url=https://www.shadertoy.com/view/llK3Dy]”liquid carbon”[/url] de la intro Rhodium…

  • #6544
    fefal64
    Adrian
    Participante

    12fps en mi mac mini. He buscado una botella de plásico, y le he puesto mis primeros 5 céntimos para ir reuniendo para una GTX 1080, y el resto que cuelga de ella.

  • #6545
    fefal64
    Adrian
    Participante

    Más recursos:
    [ul]
    [li]El código fuente de [url=https://github.com/in4k/rgba_tbc_elevated_source]Elevated/RGBA & TBC[/url][/li]
    [li][url=http://iquilezles.org/www/material/function2009/function2009.pdf]Presentación[/url] explicando el shader ([url=http://iquilezles.org]Iñigo Quilez[/url]). [/li]
    [li]La [url=https://www.shadertoy.com/view/MdX3Rr]versión shadertoy[/url] por el propio autor.[/li]
    [/ul]

  • #6546
    fefal64
    Adrian
    Participante

    Pusimos la demo Musik RunStop el sábado pasado y pudimos comprobar que en efecto el sampleado es fuera de lo habitual, y era gracioso ver como aprovecha las pausas del sample para cambiar la pantalla.
    Claro que yo preferiría disponer de algunos ciclos más de reloj 🙂

  • #6583
    syntetiko
    syntetiko
    Participante

    Me acabo de topar con [url=http://www.pouet.net/prod.php?which=68360]Escalated[/url], un remake de 1K tributo a “Elevated”, sin palabras….

  • #6611
    Lenko
    Lenko
    Jefe de claves

    Yo te pediría que siguieras poniendo otras que conozcas. Las disfruto que no veas.

  • #6625
    syntetiko
    syntetiko
    Participante

    Un placer Lenko, aprovecho y os dejo una de mis invitation intro favorita ([url=http://www.pouet.net/prod.php?which=55146]Haujobb BBQ 2010[/url]). A nivel visual es muy simple, pero su maravillosa música y su sutil sincronización la hacen deliciosa.

  • #7165
    fefal64
    Adrian
    Participante

    Me están adelantando por la derecha: [url=http://www.lofibucket.com/articles/64k_intro.html]How a 64k intro is made[/url]

    Después de habernos pegado en directo la Revision 2017 delante de [url=https://www.twitch.tv/revisionparty/videos/all]Twitch[/url] (otros tienen más suerte y van en coche), me entra el gusanillo del Shader Showdown, ya que es parte fundamental de los efectos visuales de las demos de 4k, 64k y de lo reproductores de mp3 🙂

    Para ir entendiendo la cosa, encontré [url=https://thebookofshaders.com/?lan=es]este tutorial pata negra[/url], que encima está en cristiano, es interactivo (hay que tener activado el WebGL), y seguro nos ayudará a entender lo que diablos sea que escribe [url=http://www.pouet.net/user.php?who=99150]LJ[/url] en [url=https://github.com/Gargaj/Bonzomatic]Bonzomatic[/url].

    (NOTA: en el artículo hacen referencia a otros artículos escritos por Íñigo Quiles, ¡autor de Elevated!)

    A ver si pillo de los videos en diferido, una captura legible del código de alguno de los shaders, y con más suerte una copia de las texturas… y si no, nos la apañamos con algún código que esté publicado en la Web.

  • #7282

    Hola:
    Yo tuve el honor de conocer a Iñigo (IQ) en persona hace varios años, y flipé bastante.

    Antes, hablo de 10 años atrás o así, existía http://www.escena.org, donde la gente de la escena española andaba, comentaba, criticaba y demás. No se si ahora existe alguna web por el estilo, pero escena.org está muerta.

    Como decía, Iñigo es un crack, es el creador de shadertoy, y además suele compartir mucho que y como hace las cosas. Su web (http://www.iquilezles.org/), aunque parezca cutre, vale oro. En concreto aquí (http://www.iquilezles.org/code/isystem1k4k/isystem1k4k.htm) tienen cosas en 1k y en 4k. Básicamente, el “”truco”” que usa es pintar dos triangulos en opengl / webgl / dx / vulkan y plantar un shader que matemáticamente calcule toda la escena. Por eso se puede hacer en tan poco espacio, no hay modelos, prácticamente todo son formulas matemáticas. En la sección de artículos lo explica superclaro, con mil ejemplos y videos en youtube de como hace las cosas. El canal de youtube es brutal (https://www.youtube.com/channel/UCdmAhiG8HQDlz8uyekw4ENw)

    Respecto a lo del desensamblador, yo uso IDA, es bastante heavy y te ayuda un montonazo a desensamblar código. Pero como decían por aquí , en la escena se usan un millón de trucos, que hace que verlo en ensamblador sea infumable.

    Por ejemplo y a modo de anecdota, antes de windows se usaba una llamada al api de win32 para crear una ventana (no recuerdo la función exacta) que ocupaba menos y nada (un call básicamente) ya que el api cogía parámetros por defecto y demás, así ya tenías un contexto gráfico sobre el que pintar de gratis, sin necesidad de incializar toda la parte de gdi. Así que lo abrías en un desensamblador y decías, ¿Para que carajo han hecho esto? y si no te lo explicaba alguien no pillabas que era una forma rápida y barata de tener un canvas para pintar.

    Otro ejemplo que siempre me dejó con la boca abierta, incluso sabiendo OpenGL, y hasta que me lo explicaron no me entraba en la cabeza, es el efecto túnel. No conseguía entender como un 286 era capaz de dibujar 3D, y hasta que no te explican que es una deformación 2D y que te están engañando no lo pillas.

    Para acabar esta megarespuesta, (si, soy un pesado), mi demo favorita no destaca por los efectos visuales, sino por el tamaño. Esta demo (https://www.youtube.com/watch?v=8jilQsFjD48) es de 8 bytes, no, no me equivocado, el ejecutable ocupa 8 bytes. Y si, probé a desensamblarlo y la magia está en que con un loop desplazado, hacen que el código mute… Flipante…

    Basicamente
    El código es el siguiente:
    C4 1C 9F AB 47 47 EB F9

    Eso equivale a
    org 100h (esto no está en el dump hexa de antes por que es donde carga el com)

    les bx,[si]
    lahf
    stosw
    inc di
    inc di
    jmp short 0x101

    Al hacer un jmp short 0x101 el código entra desfasado y se interpreta como
    1C 9F AB 47 47 EB F9

    que es

    sbb al, 9f
    stosw
    inc di
    inc di
    jmp short 0x101

    Un sutil cambio, pero hace que con el sbb se cambie el caracter a pintar y evita poner el color de nuevo (lahf cargando en ah el valor de los flags) .

    Toda una obra maestra.

    Saludos

  • #7284
    Lenko
    Lenko
    Jefe de claves

    La verdad es que el canal parece oro, con un montón de vídeos explicando temas pormenorizadasmente.

    Y he alucinado totalmente con la demo, que no la conocía. He visto cosas de código que se automodifica, pero conseguir este efecto con 8 bits es increíble.

  • #7340
    fefal64
    Adrian
    Participante

    Bueno, [url=http://www.ctrl-alt-test.fr/2018/a-dive-into-the-making-of-immersion/]A dive into the making of Immersion[/url] es 16 veces más grande, pero también vale la info (ver también los [url=https://news.ycombinator.com/item?id=16842576]comentarios en Hacker News[/url]).

  • #12689
    Almighty God
    Almighty God
    Participante

Debes estar registrado para responder a este debate.