_______________________________________________________________________ /* ATDT MAGAZINE :::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::[0x03-03]: NUMERO 0x03::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: "Desarrollo de juego para C64 en 2021 - PT 2" por Mirazulado */ El mes pasado me permití escribir sobre las razones que me llevaron a iniciar la tarea de crear un juego para Commodore 64 en el año 2021. Hable sobre el "porqué" de esta idea, resaltando la intención de desmitificar los secretos del desarrollo y, sobre todo, comprobar si es verdad que con la información que no poseíamos en los años 80s cualquiera de nosotros puede hacer un juego comercial. También recalqué que el desarrollo del Space Invaders tiene por objeto el iniciarme en los misterios del assembler y es solo el primer paso hacia el objetivo mayor. En esta segunda entrega ahondaré en el "cómo" se llevó adelante esta primera etapa del proyecto. ## ## ###### ### ## ## ############## ##### ############# ################ ######### ####()###()#### ####()####()#### ###O###O### ################# ################ ########### ## ########### ## ## ## ## # # ## ## ## ## ## #### ## ## ### ## ### ### ## ## # # # # En cuanto comenzó a conformarse está loca idea tuve una sola certeza, el lenguaje a utilizar sería el assembler. "Oh misterioso lenguaje con el que hablan los espectros, oscuro idioma capaz de invocar a un demonio, con la PC en una mano y el manual de referencia del programador en la otra intentaré dominarte". Muchos de nosotros sabemos que el microprocesador de una computadora ejecuta instrucciones. Lo que no todos saben es qué tipo de instrucciones ejecuta. Estamos de acuerdo que los comandos "print", "for" o "avanza tortuga 100" no están incluidos en el set de instrucciones de nuestro microprocesador favorito. No.. este ejecuta un conjunto de instrucciones mucho más simple y básico denominado "código máquina" o "lenguaje de máquina". La cadenas de estas instrucciones junto con un conjunto de datos sobre el cual trabaja forma un programa. El lenguaje assembler consiste en una serie de mnemónicos o palabras que sustituyen de forma más o menos directa un código de operación con el fin de hacer más fácil la programación. Por ejemplo, la instrucción de assembler LDA #$44 (LoaDAcummulator) reemplaza directamente a la instrucción de código máquina 0xA9 0x44. Creo que no faltó a la verdad al decir que LDA #$44 es mucho más fácil de recordar que 0xA9 0x44. El lenguaje assembler es un lenguaje de bajo nivel y se denomina así porque con sus instrucciones se obtiene un control total del hardware y está condicionado por la estructura de la máquina que lo ejecuta. En contraste, un lenguaje de alto nivel como el Basic está diseñado para ser amigable con la capacidad cognitiva del ser humano en desmedro de la eficiencia en su ejecución. Por tal motivo si queremos obtener la máxima eficiencia en nuestro programa debemos hablar el lenguaje que habla nuestro microprocesador. El software que traduce un lenguaje, ya sea de alto o bajo nivel, a código máquina se denomina compilador. /---------------------------------------------------------\ :,, ,,,, ,,,, ,,,, ,,,: : ``-, _-`` ``-, _-`` ``-, _-`` ``-, _-`` : :1010 .-, 010101010 .', 010101010 `', 010101010 .-, 01010: : ,-` '., ,-` '., ,-` '., ,-` '., : :``` _ ````` ````` _ ````` ```: : / \ ___ ___ ___ _ __ ___ | |__ | | ___ _ __ : : / _ \ / __/ __|/ _ \ '_ ` _ \| '_ \| |/ _ \ '__| : : / ___ \\__ \__ \ __/ | | | | | |_) | | __/ | : : /_/ \_\___/___/\___|_| |_| |_|_.__/|_|\___|_| : : ,,,, ,,,, ,,,, ,,,, : : _-`` ``-, _-`` ``-, _-`` ``-, _-`` ``-, : :-, 010101010 .-, 010101010 .',010101010 `', 010101010 .-: : '., ,-` '., ,-` '., ,-` '., ,-` : : ````` ````` ````` ````` : \---------------------------------------------------------/ Buena suerte la nuestra ya que el microprocesador de la Commodore 64, el 6510, es compatible con el código de operación del exitoso 6502 el cual fue muy utilizado en la década del 80. Una de las primeras apariciones de este procesador fue en el ya legendario Atari 2600. La lista se engrosa con el Apple II, PET, VIC 20, línea de 8 bit de Atari, BBC micro y la no menos importante Nintendo Famicom. Esto nos permite encontrar una enorme cantidad de material bibliográfico extra escrito para otras plataformas que puede ser muy útil para la comprensión de este fantástico chip de silicio. Si bien 20 años no son nada, 35 años desde el lanzamiento de la Commodore 64 si son unos cuantos años y la tecnología informática avanzó a pasos agigantados. No tiene sentido programar directamente sobre la vieja Commodore habiendo tanto emulador, compilador, suite de programación, editores gráficos y de sonido disponibles en cualquier PC que tengamos a mano. Entonces, voy a programar en PC bajo Windows, generar código para Commodore 64 que ejecutaremos en un emulador para las pruebas y la depuración, y solo encenderemos la Commodore en raras ocasiones, un verdadero placer. Con esta configuración y utilizando assembler puro, considero que no estoy traicionando el fin último del proyecto que es generar código en igualdad de condiciones que nuestros héroes de los 80. +---+ +--, +--, _,.--.,, ,.---------+ : : : ' : ' ,' ``. ' : : : : : : : ,' \ +-----------+ : : : : : : / \ : : : : : : : : +-----------+ : : : : : : : : : : : : : : : : : : +-----------+ : : : : : : \ / : : : : : : \ / +-----------+ : : : : : : ``. ,,' : ,' +---+ :---+ +---+ `''--''` +-------- ` Veamos en detalle las herramientas software que he utilizado: Rápidamente encontramos a VICE (Versatile Commodore Emulador) como el emulador recomendado. Entre sus características principales se destaca, además de la exactitud de la emulación, las facilidades que brinda para la depuración de software. Utilizando su monitor se pueden ver los registros, examinar, ensamblar y desensamblar el contenido de la memoria , así como depurar software utilizando los "breakpoint" que detienen la ejecución del programa en el punto que nosotros indiquemos. Estas son algunas de las fantásticas funciones que aporta este software. ¿Hay alternativas? Sí, muchas; pero elegí VICE ya que es sólido, confiable, tengo mucha experiencia con él y tiene soporte para la mayoría de los sistemas de la actualidad. En lo que respecta al compilador vamos a hablar de compilador cruzado ya que llamamos así a todo compilador que tiene la característica de generar código para una arquitectura distinta de la que se está usando para compilar. En este caso mi elección fue por el CBM PRG Studio una gran suite de programación que incluye compilador, editor de sprite, de pantalla y de caracteres; funciona perfectamente, es de muy fácil instalación y tiene buen soporte. Otra vez las opciones eran muchas y no quiero dejar de mencionar al tremendo Turbo Rascal Syntax Error. Si bien es un compilador que maneja un lenguaje de alto nivel los resultados son increíbles, es más, ya estoy utilizando este compilador en mi próximo proyecto. Tema aparte es el sistema operativo que utiliza la PC y en el cual se desarrolló la mayor parte del proyecto. Años de discusiones y peleas entre usuarios de los distintos sistemas operativos, me alerta de no involucrarme en tan escabrosa discusión. Como la diplomacia es mi bandera, solo diré que utilizo el sistema operativo de Microsoft porque es el que tiene instalado la notebook que utilizo para programar y, convenientemente, no me pertenece como para modificarla a mi antojo. Nada me impide, a mi o a ustedes, elegir Linux o MacOS como sistema operativo de base ya que todo el software que utilizo es multiplataforma y tiene versiones para cualquiera de ellos. En la próxima entrega nos meteremos de lleno en la parte divertida del proyecyo: el analisis del Space Invaders original. Hasta la próxima! ---- Mirazulado mirazulado@yahoo.com.ar ______________________________________________________________________________ !EOF -> atdt-zine-0x03-03.txt