Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

Informe asm86[010] = “Minidemo”;

–Entre la subsistencia y las ganas de vivir–

Aunque este es un informe más no se puede decir que sea por completo ajeno a la programación. Por primera vez en todo el tiempo que llevo escribiendo aquí tengo un proyecto terminado y ejecutable. O por lo menos bastante completo como para correr y hacer algo. Más adelante puede que comente como funciona y le corregiré algunos bugs para que lo puedan descargar. Por ahora les contaré de modo breve la historia de este minidemo.


A nivel técnico este minidemo es un ejecutable de Windows de 32 bits que pude comprobar que corre sin problemas en sistemas Windows Vista y 7 y que si no me equivoco debería correr también en cualquier sistema basado en Windows de 32 bits usados en los últimos 20 años. Está programado cien porciento en ensamblador y compilado en Flatassembler y todos los efectos gráficos están hechos con instrucciones de manejo de memoria. Se usó unicamente un par de funciones antiguas de DirectX para inicializar el modo de video y obtener acceso directo al frame buffer. Los sprites son archivos TGA de 32 bits que son decodificados y cargados a la memoria a nivel binario. Sprites que debo advertir de una vez que no fueron dibujados por mi sino que me los descargué de manera gandalla de otros sitios de aficionados al RPG maker. Los personajes interactuan entre ellos y con el escenario en formas que detallaré más adelante. Y también pueden ser controlador por el usuario con el teclado. Pero ya contaré los detalles de este demo con calma en otra entrada. Ahora veamos los no menos interesantes motivos de su creación. Click en la imagen para ampliarla.

Hasta que no arregle ciertos asuntos omitiré nombres de personas y organizaciones para que nadie salga desprestigiado pero lo más problable es que esos picos de visitas que he tenido esta semana tengan algo que ver con ellas. En fin, comencemos por el principio.

Resulta que hay cierto lugar muy especial relacionado con los videojuegos en el que no encontraban gente que supiera de programación en ensamblador. Me enteré por chismes que incluso levantaron por una vez su costumbre de contratar tan solo a familiares de trabajadores con tal de encontrar a alguien que supiera y se rebajaron a buscarlos fuera de su círculo de confianza. En ese tiempo no me interesaba lo que hicieran pero por otra razón que rebelaré cuando esté más ebrio decidí intervenir.

Por lo que me enteré quien estaba a cargo de programar en ASM no tenía mucha idea de lo que estaba haciendo. Y no debería de culparlo porque en las carreras de ingeniería en computación actuales no solo no se enseña ensamblador sino que no ven ninguno de los algoritomos necesarios para hacer este tipo de cosas. En fin, el demo tuvo su origen en una especie de reto, pues me enteré que había necesidad de programar un demo que cumpliera una serie de requisitos. Requisitos que estoy bien seguro que nadie de los que estaban ahí pudo cumplir al cien por ciento. Y por lo que escuché dudo que ni siquiera quién los pidió pudiera haberlos hecho. Por lo que investigué lo más que se acercaron fue a hacer algunos ejecutables que necesitaban correr en máquinas virtuales que emulaban sistemas antiguos como el DosBox.

Mencionaré alguno de los requisitos que debía de tener el programa. No los recuerdo todos: 1.- Al menos un sprite animado controlable por el jugador y que respondiera a la dirección que estuviera mirando. 2.- Un segundo personaje animado que se moviera por si mismo y que interactuara con el personaje controlado por el jugador de alguna manera.3.- El fondo debía de ser una imagen cargada y por supuesto los personajes debian de moverse sobre ella sin afectarla.4.- Debia de haber detección de colisiones 5.- Debía incluir efecto de fade (cambiar la tonalidad de las imágenes de fondo) 6.- La imagen de fondo debía de poder cambiarse en tiempo de ejecución. 7.- Las imágenes debian de tener efecto de rotación y escalado.

De momento no recuerdo más requisitos pero por lo que investigué si a quienes se les encargó esto hubieran sido capaces de abrir un sencillo archivo de imagen en ensamblador y mostrarlo en pantalla sin ningún tipo de interacción hubiera sido un logro enorme. En fin, como parte de un elaborado plan decidí que haría un programa que cumpliera con todos los requisitos y que además corriera en un sistema actual sin necesidad de máquinas virtuales.

Los datos para poder hacer el programa me llegaron el 12 de octubre del 2014 y en ese momento comencé a programar. El proyecto que creí terminaría en un més al final me llevó casi dos meses y para cuando tuve un avance jugable ya era demasiado tarde. Lo que más me costó programar fue un sistema de animación que cargara un archivo de imagen con una secuencia de animación y la mostrara en el programa de modo que reaccionara de acuerdo a lo que estuviera ocurriendo en el juego. Hubo bugs que en ese entonces no pude resolver y al final adapté el código para que no fuera posible que los bugs aparecieran. En fin, llegó el mes de diciembre y se acabó la oportunidad de cumplir mis planes presentando ese minidemo. O al menos eso creí en ese momento.

Mi plan diabólico consistía en presentar el demo y ofrecer ayuda de manera encubierta para irme construyendo una reputación pero al no tener el programa a tiempo pensé que había perdido la oportunidad. Pero para mi sorpresa me enteré que si hubo interés en ese código. Así que decidí aumentarle cosas y volver a presentarlo. Pero fue entonces cuando ocurrieron los problemas. Cuando parecía que mi vida se había solucionado resultó que se me requirió para un par de asuntos bastante menos heróicos.

No entraré en detalles porque no quiero desviarme demasiado del asunto del demo y la programación. Bastará con que sepan que este que es el primero de muchos demos es parte de un plan bastante grande que si sale bien me permitirá seguir programando por muchos años más en lugar de tener que “ganarme la vida honradamente” haciendo cualquier otra cosa que no quiera hacer por comida. Esos demos servirán para ganarme una reputación. Y esos demos a su debido tiempo los iré subiendo cuando hayan cumplido la función para la que fueron creados. Y ahora para ponerme poético agregaré que en este momento tengo que elegir entre obtener la mínima subsistencia o recuperar las ganas de vivir. Creo que iré por las ganas de vivir porque como comprobé con los incidentes del verano pasado en el que tuve todos los recursos materiales y humanos para recuperarme de aquella caida fue bastante poco lo que hice para mejorar. Esa experiencia me enseñó que prefiero mil veces estar rodeado de horrores a los que enfrento con renovado espíritu de combate que rodeado de gente dándome ánimos para levantarme y continuar viviendo una vida que ya no tiene nada para mi. Las amenazas anteriores ya no me preocupan. Tal vez sea hora de encontrar algo nuevo o tal vez volver atrás y regresar por algo que en verdad me preocupe perder. Sea como sea, esto es una oportunidad no de conseguir algo, sino una oportunidad para volver una vez más a la acción. Ya me preocuparé de las amanazas cuando lleguen.

Anuncios

febrero 16, 2015 - Posted by | ensamblador, programación, videojuegos

3 comentarios »

  1. Saludos amigo. Primero que todo no puedo describir la emoción que sentí al entrar de nuevo a este, su glorioso blog y observar la fecha de este elocuente post. “Febrero, 16, 2015” pero si eso fue solo hace cuatro días, donde estuve hace cuatro días? En fin, dije que no podría describir la emoción que siento al leerle de nuevo y no insistiré en ello. Ante todo, quiero felicitarlo por el grandioso trabajo que ha realizado. Desde que entre aquí, mi vida cambio. La forma en la que abordas los temas es fascinante. He logrado entender assembler y me ha motivado a seguir queriendo aprender. Estudio ingeniería mecatrónica en la universidad nacional experimental politécnica Antonio Jose de Sucre ( UNEXPO) en Venezuela y soy victima de uno de esos profesores mediocres que nada ensenan y como desaniman. En mi búsqueda por la verdad y el conocimiento he llevado muchos tropiezos, tanto así que he caído en manos de otros lenguajes (Que aun no aprendo y que no paran de recomendarme) Pero la verdad, es que mi corazón esta en assembler. Quizá sea un poco exagerado, pero creo que tu podrías entender de lo que hablo. Espero algún día puedas retomar esos gloriosos tutoriales de assembler para novatos. Hasta entonces seguiré entrando diariamente a leer todos los post que me faltan. Le deseo lo mejor en este nuevo proyecto que ha decidido emprender, esperando sinceramente que sea cual sea el motivo de su regreso tenga en cuenta que hay lectores que apreciamos mucho su trabajo. Saludos desde Caracas, Venezuela.

    Comentario por Andres Daniel | febrero 20, 2015 | Responder

  2. Lo mismo digo hace ya mucho tiempo no escribias nada y ya me temia
    que no siguieras con este proyecto. La verdad mis conocimientos de programacion son de total novato pero aparte de eso quiero decirte que
    que disfruto mucho de la informacion que proporcionas a punto de que estoy mas motivado que nunca para aprender ensamblador y ayudar tanto en su conservasion como en ayudar a obtener el respeto que se merece.

    Mas halla de eso quiero decir con total sinceridad y aunque mi opinion como total principiante no valga tanto, aun asi quiero decir que yo (y se que muchos mas ) apreciamos mucho tus conocimientos, el
    trabajo que has hecho para compartirlo y sobre todo que te hallas tomado la molestia en primer lugar.

    Pero no lo dudes ni por un momento mucha gente te apoya y aprecia lo que haces. Si hay algo con lo que creas que te podamos ayudar cuenta con ello.

    Daniel Almanzar,
    Republica dominicana

    Comentario por Daniel Almanzar | febrero 26, 2015 | Responder

  3. Hola,

    Soy totalmente nuevo en ASM, pero me estoy quedando totalmente fascinado por tu blog, por la cantidad de cosas que sabes, y de que manera lo redactas. Estoy encantado de encontrar a gente inteligente y que vea las cosas de otra forma.

    Saludos, y continúa, si crees que debes.

    Comentario por galeb saleh | febrero 27, 2015 | Responder


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: