Un nuevo Hola mundo mas para Hudson soft! ^^

Al fin Aventurados sean los que finalmente han tomado la decision querer desear atentar a realizar querer sumarse a esta gloriosa ambicion de querer iniciar su o sus futuros proyectos en esta Consola. quisiera decirles una vez mas que una de las razones por las cuales se realizan estos tutoriales es con el fin de enseñar capacidades y especialidades que involucra trabajar con limitaciones de hardware, asi como tambien la recompensa de generar varias esteticas que mas tarde podamos aplicar y/o intentar simular en los motores de juego modernos y/o algunos editores de juegos tales como Godot. Para hacer uso de este tutorial es necesario tener alguna version del software HuC asi que aseguren de revisar este tutorial y en caso de no tener emulador para PC Engine que se instalen el Mednafen que deje en la descripcion antes de venir aqui.

Ademas tambien se espera que aqui tengan ya a lo menos conocimientos avanzados basicos en C, siiii! >:3, estos cursos van a estar hechos como si fuese ya un curso avanzado de C(en realidad es small-c pero las reglas son bastante iguales de todas formas en ambos idiomas!). asi que, a no ser que hayan practicado un poco los cursos basicos de C, o simplemente queran tener ya las agallas para practicar estos cursos, les recomiendo que mejor empiezen con este tutorial y este tutorial tambien. Dicho Esto Empezemos.

en este tutorial considero igualmente de escencial que podamos probar un hola mundo en esta seccion. Empezare explicando algunos detalles en este primer programa que haremos, asi como las diferencias que esta contiene contrarias a C, lo estare detallando en cada uno de los tutoriales de este compilador. Les recomiendo que abran una carpeta nueva donde guarden los tutoriales, y que adicionalmente hagan una carpeta para cada programa a compilar. Ya que dependiendo del proyecto que hagan aqui, las carpetas interiores seran estructuradas en forma de Proyectos, los cuales daran varios archivos al momento de la compilacion del archivo principal en .C, recomiendo para la primera carpeta la nombren tut1 y para el archivo de den un nombre como tutorial1.c. Con todo esto listo, escribiremos esta primera linea en nuestro editor de texto con el archivo nuevo.

    #include "huc.h"

si!, tal como pueden notar contrario a los signos usados en C para incluir una cabecera, aqui usamos el "", podriamos decir que esto es debiido a que huc.h en si, no es solo una libreria, sino que es el compilador contenido para poder crear programas orientados a la PC Engine. de hecho ni siquiera es dependiente de los archivos del sistema. ya que todo lo opera bajo sus instrucciones integradas en el programa internamente contrario a C. En palabras simples. cuando programamos en C, solemos usar generalmente algunos recursos que vienen en el sistema de nuestro GNU/Linux o Windows. Pero cuando programamos en HuC, no usamos ningun sistema operativo, sino que en vez de eso simulamos una maquina la cual suele ser tipicamente un emulador o una consola. Por que todo lo que estas maquinas operan son su codigo interno, no un software incluido en la computadora(excepto la Super CD-ROM system) que viene con la tarjeta Super System Card donde la tarjeta si funciona como una especie de sistema en si.

ahora que tenemos listo esta linea, escribiremos debajo la siguente sintaxis.

    main()
    {
    }

Una vez mas SORPRESA!, se dieron cuenta que aqui no se usa int para crear el main contrario a C O C++?, la razon esta en que nuevamente las operaciones computaciones que hacemos en la PC Engine no vienen directamente del programa, sino que es la consola o el emulador mismo los que hacen que la memoria quede limpia despues de apagar la maquina o terminar el programa. los 64 KB de VRAM que se usan dentro de esta consola son suficientemente rapidos para que la CPU pueda limpiarlos sin ningun obstaculo o perdida en ello. lo que hace que realmente estemos programando en una consola muy potente y superior a lo que es la NES en este sentido!. ademas en este programa usaremos bucles que hacen que el programa se mueva de acuerdo a la secuencia que le demos, ya que aqui no hay un Exit o algun terminador del programa, por lo que un int aqui no es de ninguna forma necesario. Es mas incluso. Aqui al contrario que C tenemos la posibilidad en un toque casi similar a Python la capacidad de retornar cualquier variable de un tipo especifico sin la necesidad de mencionar el tipo de variable que se retornara en las funciones.

ahora empezemos a añadir un poco de codigo para empezar nuestro hola mundo en este programa. Al contrario del sitio web anterior de Obeybrew donde cesaron sus tutoriales por mas de 10 años pasados, espero reflejar algunos detalles extra que espero notar en este tutorial. y que la documentacion no habia detallado con claridad en el pasado(algo me dice incluso que me atreveria a hacer una mejor documentacion de este tutorial si hiciese mi propia version de este programa incluso ='3..... jajajajajaja! XD). asi que empezemos a escribir las primeras lineas dentro del main.

    set_color_rgb(1, 7,7,7);

lo primero que hacemos aqui es configurar un color que usaremos para la siguente funcion. Si bien este comando no es tan necesario de utilizar al principio, dominarlo puede sernos muy escencial a la hora de hacer bucles, tales como efectos de alguna explosion parpadeante, o al momento de crear escenas de gran impacto cuando construimos escenarios. como he dicho antes el sistema de colores de la paleta maestra de HuC es un grupo de 512 colores listados en un grupo de 9 bits que se dividen en 3 grupos de 3 bits. dando asi a cada grupo la posibilidad de formar una combinacion de 8 numeros posibles dando del 0 al 7 para los 3 ultimos parametros. mientras que el primer parametro se enfoca en el numero de color dependiendo de la paleta. (del 0-15 para la primera paleta, del 16-31 para la segunda paleta etc etc.) la PC Engine puede abarcar hasta un maximo de 32 paletas dividas en 2 secciones, que tambien se dividen en la memoria de la VRAM, las cuales son la seccion de Sprites y la seccion de fondos(backgrounds). Despues me encargare de explicar el concepto de la Vram. por ahora solo enfoquemonos en la capacidad de colores de la maquina. Dicho esto si finalmente calculamos la suma de los colores que contiene cada paleta(16*32), tambien tenemos un espacio total de 512 colores(del 0 al 511). la configuracion del color 1 de la paleta numero 0 para los fondos esta lista, prosigamos a escribir la siguente funcion donde definiremos que colores usara el fondo de HuC, NO oficial de la PC Engine, para que escriba nuestro preciado hola mundo.

    set_font_color(1, 0);

la funcion de este comando hace que definamos como seran escritos nuestros textos, el primer parametro es para la parte del color interno de las letras. y el Segundo parametro es para la parte del color externo que tendra nuestro texto. Todos los cuadros de texto que escribamos aqui siempre vendran independiente de lo que haya en dicho cuadro puede ser 100% cubierto de lo que lleva dicho cuadro. Esto es importante mencionarlo, ya que en tutoriales avanzados si colocamos texto en los cuadros de mapa, y digamos por ejemplo usamos la misma paleta del fondo para colocar los colores de los mapas de los niveles podriamos estar escribiendo nuestro texto en el color de fondo inesperado o podriamos obstaculizar algunas piezas del mapa, por lo que es importante tener cuidado con que paleta usamos, o que al menos podamos mover los colores hacia otra paleta y configurar el grupo de colores que pertenezcan a dicha paleta. Por fortuna tenemos un comando que puede mover la paleta del fondo que lo presentaremos ahora mismo!.

    set_font_pal(0);

en C normalmente las variables que no son inicializadas suelen dar un error, En el caso de HuC jamas ocurre esto!, en vez de retornar NULL o dar un error, todas las variables que no sean inicializadas, suelen principalmente dar al comienzo un valor de 0, por lo que si es es el valor que esperamos para ciertas variables, es posible omitir este paso al principio del codigo, siempre que solo ejecutemos el codigo principal del primer archivo que programamos aqui. Dicho esto esta variable tampoco es al comienzo normalmente necesaria. Pero como demostracion de utilidad al igual que set_font_color() podriamos querer hacer un movimiento similar de efectos con esta funcion. estableciendo el numero de paleta donde el fondo sera utilizado.(del 0 al 15). Finalmente solo nos queda ejecutar esta funcion.

    load_default_font();

una vez mas cabe destacar que normlamente en HuC el fondo establecido por defecto ya suele estar cargado sin esta funcion, pero si en algun momento queremos volver al fondo de por defecto esta funcion tambien esta disponible para su uso esta funcion.

Y ahora si finalmente con todos estos comandos configurados podemos finalmente escribir nuestro primer texto nada mas usando esta funcion!

    put_string("BY HUDSON!", 8, 13);

el uso de este algoritmo es bastante simple de realizar. Todo lo que hace es primero es: escribir un texto desde un punto inicial en un cuadro(tile) usando el clasico espacio de 8x8 pixeles. la PC Engine esta hecha como una consola que puede mostrar una pantalla configurada en un tamaño de 256x224 pixeles. si dicha area la dividimos en 8x8 pixels, tendremos un total de 32x28 cuadros. Por lo que desde esa pantalla podremos colocar la X e Y iniciales donde queremos que el texto escriba de izquerda a derecha, estos son el segundo parametro(del 0 al 31) y el tercer parametro(del 0 al 27)

finalmente si todo esta listo nos aseguraremos de guardar el codigo del archivo en una carpeta limpia. ya que contrario a gcc, el compilador de HuC crea otros archivos adicionales ademas del que se usara para ejecutar dentro del emulador, tales como algunos .lst .s y .sym, ignoren esos archivos que no son relevantes para nuestro caso, los suelen usar mas las personas que tienden a programar en su lenguaje ensamblador 6280 normalmente, y no tengo intenciones de cubrir dicho lenguaje de programacion en estos momentos. Pero estoy proceso de estudiar dicho Lenguaje.

una vez guardado el programa deberian tener un tipo de codigo fuente como el siguente en el programa.

     #include "huc.h"

     main()
     {
        set_color_rgb(1, 7,7,7);
        set_font_color(1, 0);
        set_font_pal(0);
        load_default_font();
     }

ahora dentro en la carpeta limpia que tiene el archivo que han guardado llamaremos a una terminal o Sistema de Comandos y escribiremos dentro el siguente comando

    huc tutorial1.c         o como deseen llamarle en si -v-.

despues si la compilacion y los 2 pasos fueron realizados con completo exito y sin errores veremos una serie de archivos que van vinculados con dicho archivo. El mas importante de todos estos archivos debe ser uno que se llame tutorial1.pce SI!, ese archivo que crearon es 100% un ROM que puede ser ejecutable en cualquier emulador que arranque juegos de PC Engine, si ya instalaron mednafen solo es cosa de que tengan 2 opciones para los que usen GNU/Linux lo pueden abrir simplemente a traves del comando "Mednafen tutorial1.pce", y para los que usen windows, deberan arrastrar el ROM a traves del ejecutable del programa de mednafen.(Si.... el software interno en si no tenia un menu grafico para arrancar el emulador, y solo funciona si se tiene un Rom abierto con el.)

Repito una vez mas que se dirijan a la ultima seccion de este tutorial los que todavia no instalaron Mednafen, aqui tienen ya las instrucciones para instalarlo tambien y que puedan finalmente arrancar el primer programa con el mensaje que hemos escrito en el programa

si pueden observar la ventana con el mensaje que escribieron podran darse cuenta todo el mensaje esta escrito en un texto donde cada letra es un cuadro de 8x8 pixeles en todo el mensaje. siendo el primero de los caracteres escrito en el cuadro ubicado en la posicion X:8 Y:13. Y ahi esta finalmente. Felicidades por que finalmente han completado el primer paso para ser los proximos programadores en programar para una de las consolas mas antiguas de 16 bits creada por Hudson Soft y NEC. asi como tambien consiguieron abrir una oportunidad mas para revivir el gran poder que lleva esta esplendida reliquia del pasado! Gracias por pasarse a este tutorial, en la proxima seccion explicaremos sobre el uso de como configurar variables para que comprendan todos los valores relevantes que alrededor de todas las variables, parametros, datos de carga, direcciones, y todo tipo de parametros que usemos aqui usaran siempre y durante todo el programa estos tipos de variables! Nos vemos adelante aventureros en el proximo tutorial! :D, FELICES 20+ AÑOS DE HuC! Y FELICES 30 AÑOS DE PC Engine!


                                     .''.
       .' '.             *''*    :_\/_:     .
      :_\/_ :   .    .:.*_\/_*   : /\ :  .'.:.'.
  .''.: /\  : _\(/_  ':'* /\ *  : '..'.  -=:o:=-
 :_\/_:'.:::. /)\*''*  .|.* '.\'/.'_\(/_'.':'.'
 : /\ : :::::  '*_\/_* | |  -= o =- /)\    '  *
  '..'  ':::'   * /\ * |'|  .'/.\'.  '.


                 /  \
                 |  |
      /  \       L__\          /  \
      |  |         l           |  |
      L__\         l           L__\
        |          l             l
        |                        l
        l                        l


--------------------------------------------------

__________________________________________________

←volver al inicio | ←Volver al menu de tutoriales || Capitulo 2: Variables→