jueves, 24 de mayo de 2012

Hola Mundo .NES... en C!!

Eso mismo pues, roms de NES generadas con simple y conocido lenguaje C, se trata de un compilador de C para sistemas basados en el procesador 6502 llamado cc65. El cc65 es capaz de compilar para sistemas Commodore, Atari y teóricamente Apple II (todos basados en el 6502), si bien yo me oriente principalmente en NES (por ser mi consola favorita) la información completa esta disponible en el sitio oficial del compilador para que prueben en el resto de los sistemas:

http://www.cc65.org/

A continuación el código del programa mas simple disponible prácticamente para cualquier lenguaje, esta vez compilable para roms de la vieja NES:

#include <conio.h>
int main (){
    gotoxy(6, 10);
    cprintf("Hola Mundo con cc65...\n");
    gotoxy(6, 12);  
    cprintf("Saludos Mirager...");
    while(1){}
    return 0;
}

Si bien para un programador, que conozca el lenguaje C esto es un código muchos menos que básico, a la hora de compilar habrá que tomar en cuenta las limitaciones de cada consola, este ejemplo debería ser compilable para todas ellas al no requerir de ninguna característica especial.
Otro dato a considerar es la forma en que se compilan los objetos, pues existe una forma paso a paso (lenta pero segura) y una forma rápida (con defectos), a continuación las dos opciones

A)


La forma paso a paso resultara útil una vez avanzando un poco con este tema para el uso de joystick y características propias de cada sistema, para este simple código seria de la siguiente forma:

holamundo.c -> cc65 -> holamundo.s ->  ca65 -> holamundo.o -> ld65 -> holamundo.nes (en esta parte se deberá linkar la librería del sistema requerido, en este caso nes.lib)

a continuación una imagen descriptiva:



Si tienes un emulador de NES instalado y configurado para abrir las roms automáticamente, el resultado debería verse como este (de lo contrario deberás abrir la roms manualmente desde el emulador (demasiado obvio)):


B)


La forma rápida para este código pasa por programa que se encarga de generar los ficheros necesarios para la compilación de la rom:

holamundo.c -> ld65 ->holamundo.nes

probablemente por alguna mala utilización mía el resultado se ve similar pero no idéntico, seguramente habrán usuarios del cc65 que conozcan bien las limitaciones de este compilador, de todos modos aqui va una imagen descriptiva:




Y el resultado generado es mas o menos así:



Podrán darse cuenta que en el caso de las letras mayúsculas en vez de diferenciarlas en tamaño con respecto a las minúsculas les agrega un fondo y ennegrece, si alguien esta sobrado de tiempo y descubre si se debe a una mala utilización del programa, siempre estaré agradecido de que me lo diga o comente :D

Mirager  

2 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Hola, interesante blog, aqui pude aprender a imprimir el clasico Hola Mundo en el emulador de NES, habia visto en varios foros que Assembler es el mas rapido, pero tambien C podria usarse, tengo nociones basicas-medias de programacion en C en forma estructurada, he estado buscando en internet manuales y tutoriales pero no hay nada de informacion, ¿ sabes de alguna pagina o sitio donde hayan tutoriales explicativos para programar en C en la NES (por el tema de las limitaciones)?, te agradecería mucho si me dieras algún dato.

    ResponderEliminar