domingo, 31 de julio de 2022

Nintendo World Cup para Game Boy


Nintendo World Cup de 1991 es uno de esos juegos deportivos que los fanáticos de los juegos no deportivos seguramente habrán puesto en su Game Boy en algún momento. Creo que con razón: ningún otro juego de fútbol es tan divertido como este. Por un lado, esto se debe a los divertidos diseños de los jugadores, que también te pueden resultar familiares de otros títulos de Technos y, por otro lado, al hecho de que puedes actuar de un modo mas arcade en el terreno de juego... ¿Árbitro? falso! Se permiten los empujones y las faltas en el juego sin ninguna consecuencia disciplinaria (tarjeta amarilla/roja, etc...).


Nintendo World Cup ofrece tres modos de juego:


    • Tú contra Game Boy

    • Dos jugadores contra la Game Boy

    • Jugador contra Jugador


Si vas solo contra Game Boy, debes derrotar a 12 selecciones nacionales para salir victorioso del torneo.

Podremos elegir algunos equipos fuertes como Inglaterra, España, Italia, Brasil o Argentina.





Los controles son sencillos: el balón se envía con el botón A. pase, el botón B realiza un tiro a portería o si estás a la defensiva se comete una entrada.


Al presionar A+B al mismo tiempo, se activa un súper disparo. Estos súper tiros son, casi una garantía de gol, al menos contra los equipos más débiles. Una función adicional de las teclas A+B sería la patada aérea. Para ello, la pelota debe estar en el aire.


En defensa las dos opciones disponibles son intentar tomar la pelota del oponente o cometer faltas muy brutales colocando a horcajadas al jugador con el botón B.



Hay cuatro campos de juego diferentes: hierba, pista dura, arena y hielo. Además cada lanzamiento especial tiene sus propias trampas  


En el transcurso del juego no podemos perder o empatar un partido sino, inmediatamente se acabó el juego. ¡Solo las victorias cuentan en la Nintendo World Cup! Pero no te preocupes, después de cada partido ganado recibes un password para que no sea necesario empezar de nuevo todo el juego. 


jueves, 28 de julio de 2022

ROMHACKS

 


El Romhack es una rama del homebrew un poco particular. Para empezar, ROM significa memoria de solo lectura , que proviene del chip dentro de los cartuchos de videojuegos que contiene todos los datos relacionados con ese juego específico. Estos datos se pueden copiar a través de una imagen de ROM o un archivo de ROM, y esto es lo que se usa para hackear ROM.


El Romhacking es el proceso de tomar los archivos de un juego y modificarlos para crear una nueva experiencia utilizando el motor del juego anterior . Con las herramientas de edición adecuadas, un hacker de ROM puede cambiar cosas que van desde opciones de diálogo hasta mecánicas de juego básicas y diseño de niveles.


Los hacks de ROM generalmente se mantendrán fieles al diseño original del juego, optando en su lugar por crear nuevos niveles, introducir nueva música y elementos del juego, y apuntar a crear una forma totalmente nueva de experimentar el juego original.



La mayoría de los hacks de ROM se realizan mediante el uso de un editor hexadecimal , que se enfoca en editar texto y conceptos fundamentales en cualquier juego en particular, como las propiedades de los elementos. Aprender a usar un editor hexadecimal es la base para cualquiera que quiera aprender el Romhacking.


También hay sistemas de edición adicionales según la tarea en cuestión, como un editor de mosaicos para cambiar gráficos y un editor de niveles para rediseñar los niveles que ya están en el juego. Las herramientas que usará un pirata informático dependen completamente del alcance y el objetivo del ataque específico en el que están trabajando.


Cuando se completa el hack de la ROM, casi siempre se reproduce a través del emulador, ya que esta es la forma más fácil de transferir y cargar los archivos. Sin embargo, hay ciertas ROM parcheadas que se pueden reproducir con los cartuchos y el hardware originales, y encontrar formas de incorporar experiencias emuladas en las consolas originales se ha convertido en el objetivo más popular por los aficionados a esta modalidad.


El sitio web ROMhacking.net es un excelente lugar para comenzar, ya que hay muchos documentos, foros, preguntas frecuentes y artículos que responden a casi cualquier pregunta que uno pueda tener al comenzar a investigar el mundo del Romhacking. También proporciona una lista de juegos para que pueda limitar su búsqueda a las cosas que realmente le interesan.


Revisar las cosas en YouTube también es un buen comienzo y, a menudo, los canales más populares y/o los creadores de la ROM en particular tendrán los parches en algún lugar de la descripción, lo que hará que esas ROM sean fáciles de encontrar.


Espero que os haya gustado y en futuros post aprovecharemos para conocer algunos de estos hackroms y analizarlos.


GBDK-2020 (II)

 Esqueleto básico de un juego en GBDK


Todos los juegos realizados con GBDK-2020 Utilizan un esqueleto común, con algunas variaciones a modo de template, por este motivo, vamos a analizar uno de estos, el que use yo para aprender esta tecnología y lo analizaremos para intentar entenderlo



//includes and imports

#include <gb/gb.h>


//Variables area 


//functions declarations area


void checkInput();

void updateSwitches();


//Main function

void main() {

while(1) {

checkInput();

updateSwitches();  

wait_vbl_done();

}

}


void updateSwitches() {

HIDE_WIN;

SHOW_SPRITES;

SHOW_BKG;

}


//Butons functions

void checkInput() {

// START

    if (joypad() & J_START) {

    }


}


Incluimos Vamos a analizar el código que hemos visto anteriormente para intentar entender como funciona:


#include <gb/gb.h>

Incluimos las librerias de gameboy en nuestro código, la librería gb.h es la que incluye la mayoria de las funnciones que necesitaremos para nuestros desarrollos


void checkInput();

void updateSwitches();

Declaramos las funciones que vamos a necesitar


void main() {

Funcion principal y de entrada del juego


while(1) {

Bucle principal del juego, este bucle se repite cíclica-mente para generar la sensación de animación y vida al juego, en cada ciclo se hacen los cambios necesarios en la pantalla y se muestran ademas de comprobar las pulsaciones de la botonera de la consola.


checkInput();

updateSwitches();

wait_vbl_done();

Llamadas a las funciones para comprobar que se a pulsado algún botón de la consola y refrescar la pantalla con los cambios


void updateSwitches() {

En el cuerpo de esta función especificaremos los refrescos de pantalla con constantes propias de la librería gb.h


HIDE_WIN;

SHOW_SPRITES;

SHOW_BKG;

Constantes de refresco de la libreira gb.h su funcion es mostrar los sprites y el fondo en cada ciclo de refresco.


void checkInput() {

En el cuerpo de esta función especificaremos los comportamientos de entrada de la consola por los botones


if (joypad() & J_START) {

Este condicional se ejecuta si se a pulsado el botón start de la consola, en este bloque añadiremos pues la lógica que queramos si el botón es pulsado


¿Qué opinas de esta entrada? ¿tienes dudas? espero tus comentarios.

miércoles, 27 de julio de 2022

Introducción a la programación en C (III)

Variables y constantes


Una variable es un espacio de memoria al que podemos referenciar mediante un identificador y que su valor puede cambiar a lo largo del juego, como puede ser las vidas del jugador, la puntuación, etc...

En cambio una constante, como su nombre indica, su valor permanecerá fijo durante todo el juego, su utilidad radica en que podemos referenciar valores por su identificador y no tener que recordar un valor concreto, haciendo nuestro código más legible, por ejemplo nos va a ser mas fácil de leer en el código y recordar la palabra “pi”, que no ‘3,141592’ y esta claro que el valor de “pi” no va a variar nunca.

Una variable cuenta de 3 partes, identificador, tipo y valor.


Identificadores


El identificador es la palabra mnemotécnica que nosotros definimos para poder referenciar la variable dentro del código del programa. Esta “palabra” debe de cumplir una serie de requisitos.


  • Solo se pueden usar letras mayúsculas y minúsculas del alfabeto inglés, _ (signo de subrayar) y dígitos.

  • Un identificador nunca podrá empezar por un dígito

  • El lenguaje distinguirá entre mayúsculas y minúsculas, es decir, serán dos variables diferentes “Variable” y “variable” para el compilador.

  • Se debe empezar obligatoriamente con una letra o con el signo de subrayar.



Los identificadores y sus reglas no solo se vana a utilizar para nombrar variables, sino para todos los elementos que necesitan ser identificados en nuestro código, como constantes y funciones, las cuales trataremos más adelante.


Tipos de datos

Con el tipo declaramos que tipo de valor vamos a almacenar, este paso es indispensable en C y en todos los lenguajes de programación que pertenecen a la familia de lenguajes fuertemente tipados, como java, pascal, c++…

Su utilidad radica en la optimización del uso de la memoria del juego.


Valor

Es el valor, numérico o carácter que va a contener la variable.


Ejemplos



int numero;     /* crea la variable numero, de tipo número entero */

char letra;     /* crea la variable letra, de tipo carácter*/
float a, b;     /* crea dos variables a y b, de tipo número de coma flotante */
int numero = 0;         /* crea la variable entera numero
                        y la inicializa a 0*/
char letra = 'p';       /* crea la variable carácter letra
                        y la inicializa a 'p' */
float a=57.1, b=1.2E-5; /* crea las variables a y b,
                        de tipo número de coma flotante, y los inicializa
                        a 57.1 y 0.000012, respectivamente*/


martes, 26 de julio de 2022

El lenguaje de programación C de Dennis Ritchie

 El lenguaje de programación C de Dennis Ritchie



Vamos a conocer uno de los mejores libros para aprender C que podremos encontrar y que nos será de utilidad en el desarrollo de nuestros juegos.

Clásico entre los clásicos, se debería de poseer aunque solo fuera para reconocer a su autor, Dennis Ritchie, que es el que desarrolló el propio C. Es como el padre de todos los manuales de programación, con un enfoque muy practico, en otros libros de programación  nos acostumbraremos a ver referencias a este libro.

Como anécdota, es el primer libro en el que aparece el famoso programa Hola Mundo,  cosa que a echo que comúnmente se le atribuya su autoría aunque se conoce que no es así. La edición en español está agotada pero por el precio que tiene y su lenguaje perfectamente comprensible recomendaría adquirir la versión en inglés.

GBDK-2020

 


Según su pagina de Github (https://github.com/gbdk-2020/gbdk-2020), GBDK-2020 es un kit de desarrollo multiplataforma para consolas de juegos basadas en procesadores SM83 y Z80. Incluye bibliotecas, utilidades de cadenas de herramientas y el conjunto de compiladores SDCC C.

Consolas compatibles:

  • Nintendo Gameboy / Game Boy Color

  • Analogue Pocket

  • Sega Master System & Game Gear

  • Mega Duck / Cougar Boy


El GameBoy Developer's Kit (GBDK, GBDK-2020) se utiliza para desarrollar juegos y programas para Nintendo. Game Boy (y algunas otras consolas) en C y ensamblado. GBDK incluye un conjunto de bibliotecas que satisface los requisitos más comunes y genera archivos de imagen para usar con un GameBoy real flasheando un cartucho, con un Evendrive o emuladores.


Características de GBDK:

Cadena de herramientas C y ASM basada en SDCC con algunas utilidades de soporte

Un conjunto de bibliotecas con código fuente

Programas de ejemplo en ASM y en C

Compatibilidad con múltiples imágenes de bancos de ROM y banca automática


GBDK es gratuito y la a mayor parte del código de las herramientas incluidas está bajo licencia GPL, que es una licencia de derechos de autor ampliamente usada en el mundo del software libre y código abierto, lo que hace es permitir que los usuarios finales (personas, organizaciones, etc) tengan libertad de usar, estudiar, compartir (copiar) y modificar el software. Las bibliotecas de tiempo de ejecución deben estar bajo la LGPL.

La versión 2020 incorpora muchos cambios, hay que tener en cuenta que la versión anterior data del año 2000. Entre ellos el cambio quizás mas importante es el de compilador del LCC al SDCC,

Desde su pagina de Github podemos descargarlo en el apartado "Current Release" tanto para Windows, Linux y Mac Os


En próximas entregas iremos viendo paso a paso como desarrollar nuestros primeros juegos.

lunes, 25 de julio de 2022

Generar documentación para nuestros juegos a partir del código fuente con Doxygen

 

Doxygen es una herramienta que nos va a permitir generar documentación a partir de nuestro código fuente en c, aunque es compatible con una gran cantidad de lenguajes más como PHP, C++, etc. Y esta disponible tanto para Windows, linux y Mac.

Esta documentación puede sernos de mucha utilidad de cara a documentar el código de nuestros juegos y poder reutilizar su código fuente, descubrí esta herramienta por casualidad buscando un equivalente al Javadoc de java en C.

Sus principales características son

  • Puede generar un navegador de documentación en línea (en HTML) y/o un manual de referencia fuera de línea (en LaTex)

  • Doxygen para extraer la estructura del código de archivos fuente no documentados y también puede visualizar las relaciones entre los diversos elementos mediante la inclusión de gráficos de dependencia, diagramas de herencia y diagramas de colaboración, que se generan automáticamente.

  • También puede usar Doxygen para crear documentación normal

Un ejemplo muyu claro de la documentación que genera podria ser la documentacion del Api KDE que esta elaborada con esta herramienta https://api.kde.org/


Puedes descargarte Doxygen desde el siguiente enlace: https://doxygen.nl/download.html


Bloque de comentarios especial de Doxygen


Para poder poner comentarios en su código para que doxygen los incorpore en la documentación que genera debemos añadir un bloque de comentarios especial, este bloque se asemeja a un bloque de comentarios de estilo C o C++ con algunas marcas adicionales, por lo que doxygen sabe que es un fragmento de texto estructurado que debe terminar en la documentación generada.


Podemos usar el estilo Javadoc para ello, que consiste en un bloque de comentarios de estilo C que comienza con dos *, como este:

    /**
     * ... texto ...
     */

Doxygen incluye una sintaxis propia dentro de los bloques de comentarios especiales, a continuación dejo un ejemplo extraído de su documentación:




/**
  @brief Writes the digital output of a given line in a given subdevice

  Most digital output systems are organized in groups of lines, (8, 16, 32 ...) and the aim of this function is to handle only
  one line a given group

  @param subdevice target subdevice, an integer between 0 and 255
  @param line line to be modifided, in general, a value between 0 and 31, but depends on the target slave
  @param value state to be written to thew line, mus be 0 or 1

  @returns the result of the operation, being cd_Error_NoError if all worked OK

  Example:
  \verbatim
      cd_Error my_error;

      my_error = cdm_DAQWriteDigitalLine(2,31,1);
      if (my_error != CD_Erro_NoError) {
            printf("Ups, this failed with error %s\n", cd_ErrorStr(my_error);
      }
   \endverbatim

  */
cd_Error cdm_DAQWriteDigitalLine(uint8_t subdevice, uint8_t line, uint8_t value) {
 ...

}

Para aprender esta sintaxis os recomiendo que le deis un vistazo a la documentación oficial en: https://doxygen.nl/manual/index.html


Lanzando el generador de HTML


Para lanzar el generador de HTML se procede con los siguientes pasos minimos desde el GUI una vez descargado y instalado:


1. Indicamos el nombre de nuestro proyecto



2. Especificamos el lenguaje de programación, en nuestro caso C.




3. Seleccionar la forma de salida (en nuestro caso no tocamos nada)




4. Seleccionar diagramas de salida (en nuestro caso no tocamos nada)




5. En el ultimo paso pulsamos el botón “run doxygen” y si queremos ver el resultado del html generado, una vez terminado el proceso pulsamos el botón “Show HTML output”







Espero que os haya gustado este post y si queréis que profundicemos mas en el tema solo tenéis que decirlo en los comentarios :)






Algunos Juegos HomeBrew GameBoy

 

Como ya sabéis los juegos Homebrew son juegos hechos para plataformas que no se comercializan ya o que su fabricación se a descontinuado, como el caso de nuestra querida Game Boy.


Si no sabéis que son los juegos Homebrew os dejo un enlace a un post en el que os explico lo que son https://jujubegames.blogspot.com/2022/07/que-es-homebrew.html


Viendo un día en el grupo de Facebook de Game boy España, grupo al que encarecidamente os recomiendo uniros por la cantidad de información que maneja y el buen rollismo que impera, vi un post de Javier González Robles en el que proponía un reto con los siguientes 4 juegos “Indies” de Game Boy para probarlos durante 15 días. La verdad es que vi que eran títulos tan buenos que no he podido evitar el contaros cuales son y comentaros un poco de que van.


Cada día me sorprende mas la escena Homebrew los niveles de calidad que esta llegando a tener, espero que disfrutéis de estos juegos, tanto como yo disfruto escribiendo sobre ellos.


DMG DEALS DAMAGE



Como dicen en su pagina webcreado para celebrar el 30 cumpleaños de la mejor consola portátil jamás creada!” Un divertido título de acción donde manejaremos una Game Boy para pelearnos con todo tipo de maquinitas de la competencia celosas por el éxito de nuestra querida consola, 30 niveles de dificultad (Uno por cada año de la consola) y mucha diversión y originalidad.


Puedes obtener mas información en su pagina web https://drludos.itch.io/dmg-deals-damage




DEADEUS



Juego realizado con la herramienta GBStudio de Chris Maltby, que da una idea de las autenticas maravillas que podemos desarrollar con la misma (y de la que espero hablaros mucho en este blog).


El juego se centra en un niño pequeño que tiene una pesadilla profética que le dice que todos morirán en 3 días y que tiene que investigar su aldea para ver cómo puede salvarlos, si es que lo hace.


Un excelente y oscuro rpg de terror ambientado en un pueblo donde ocurrirán grandes misterios... ¡con hasta 11 finales diferentes!


Puedes obtener mas información en su pagina web https://izma.itch.io/deadeus



TOBU TOBU GIRL DX


Desde el estudio independiente danés Tangram, nos llega un juego de habilidad vertical (y bastante dificultad) donde manejaremos a una chica que va en rescate de su gato, que ha salido volando en globo.


Tobu Tobu Girl Deluxe es una versión nueva y mejorada del original que presenta gráficos mejorados a todo color y es totalmente compatible con Game Boy, Game Boy Color y Super Game Boy.


Además de todo esto, el juego es de código abierto y podemos descargarnos su código fuente en

https://github.com/SimonLarsen/tobutobugirl-dx


Puedes obtener mas información en su pagina web https://tangramgames.dk/tobutobugirldx/



DANGAN GB



Dangan GB es un Shooter corto y simplista de boss-rush/bullet-hell lanzado para Game Boy para celebrar el 30 aniversario de la consola.

Algunas características del mismo:

  • 6 jefes únicos con múltiples fases

  • sin parpadeo de bala

  • sin ralentización

  • sin desgarramiento

  • muchas balas

Un shooter donde pondrás a prueba tus reflejos, con enemigos y cantidad de animaciones en pantalla que te dejarán perplejo.

Puedes obtener mas información en su pagina web https://snorpung.itch.io/dangan-gb


Espero vuestros comentarios y espero que si probais estos juegos os gusten.

viernes, 22 de julio de 2022

Ultima I: The First Age of Darkness



Este fue el primer juego de la serie Ultima, una serie conocidísima de juegos de rol.  En sus inicios su titulo era "Ultima" y fue creado originalmente para ordenadores Apple II en 1980 por Origin Systems luego con los años fue mejorado y portado a pc y su nombre fue cambiado a Ultima I: The First Age of Darkness.



Fue uno de los primeros juegos RPG que se realizaron y a pesar de su antigüedad podemos encontrar elementos que luego fueron usados en títulos posteriores del mismo genero como la posibilidad de personalizar nuestro personaje al inicio del juego, asignando y repartiendo valores de fuerza o la elección de raza.

Es un juego que gráficamente no a envejecido nada bien, pero que aun así fue una gran revolución en su momento, con una duración de partida media de 5 horas con los objetivos básicos del juego y 10 horas si se quiere completar al 100% (Algunos jugadores lo han logrado en menos de 2:30 horas).



Ultima gira en torno a una búsqueda para encontrar y destruir la Gema de la Inmortalidad, que está siendo utilizada por el malvado mago Mondain para esclavizar las tierras de Sosaria. Con la gema en su poder, no puede ser asesinado, y sus secuaces deambulan y aterrorizan el campo. El jugador asume el papel de 'The Stranger', un individuo convocado de otro mundo para acabar con el gobierno de Mondain. El juego sigue los esfuerzos de Stranger en esta tarea, que implica progresar en muchos aspectos del juego, incluido el rastreo de mazmorras y los viajes espaciales.

Puedes descargar el juego Aquí

Os dejo también un mini video para que veáis como es gráficamente el juego:




Espero que os haya gustado el post y ¡espero leer vuestros comentarios!


jueves, 21 de julio de 2022

Hacer ping en C


Ahí va esta receta de bastante utilidad, que me encontré por los apuntes de una de mis anteriores empresas, aunque no esta relacionada con el mundo del retro directamente, como en este blog estoy tratando algo de lenguaje c, quizás os pueda interesar.

Básicamente su utilidad radica por si alguna vez necesitamos hacer un ping para comprobar si tenemos conectividad con algún dispositivo conectado a nuestra red.(Solo bajo linux)

 int ping(string target)
{
  char buffer[50];
  char c[20];
  sprintf(buffer,"ping -c 1 -W 1 %s | grep -c ms", target.c_str());
  FILE *p = popen(buffer,"r");
  fgets(c, 5, p);
  pclose(p);
  if (strcmp(c, "3\n") == 0)
    return 1;
  return 0;
}

miércoles, 20 de julio de 2022

Fantastic soccer Para Atari XE

 



 

El deporte Rey a tenido infinidad de videojuegos desde la epoca de los 8 bits y la Atari 2600 hasta la actualidad. Quería recordar alguna de estas joyas de los 8 bits, y para ello he pensado en un juego que me recuerda mucho mi infancia, Fantastic Soccer para La familia de ordenadores Atari XE.

 

De el catalogo de juegos de futbol de la familia de maquinas Atari XE, podriamos destacar tres cosas

 

  1. Es el único con perspectiva vertical
  2. segundo tiene pases simples y eficientes como pases largos y la posibilidad de arrebatarle el balón al oponente.
  3. Además, puedes elegir entre juegos de 10 a 90 minutos y con diferentes tipos de formaciones.

 

También es destacable la secuencia de celebraciones de gol. Su único inconveniente: los equipos se limitan a la Premiership (Everton, New Castle, Liverpool, Manchster, etc…

 

Podeis ver su ficha y descargar su rom en el siguiente enlace: http://www.atarimania.com/game-atari-400-800-xl-xe-fantastic-soccer_1931.html

martes, 19 de julio de 2022

Uczeń czarnoksiężnika (El aprendiz de brujo) para Atari 8-bits

 

Desde Polonia aquí está el juego de "LK Avalon" en 1992, cuando producían muchos juegos, cuando todas las compañías que no eran de Europa del Este habían dejado de hacer juegos para Atari de 8 bits.

 

Uczeń czarnoksiężnika (El aprendiz de brujo) es un juego de plataformas. Tu personaje está a punto de recuperar todas las páginas de The Magic Book y algunos artefactos como Magic Wand y Magic Hat que pertenecieron a tu maestro hechicero que murió durante la creación del hechizo. Viajas por el castillo del hechicero encontrando lo que te dará la posibilidad de convertirte en mago.

 

El juego se carga y muestra una bonita pantalla de cuatro colores con la imagen de una especie de monje o mago con lo que parece un rayo de fuego saliendo de su mano.

 

El juego es similar a la serie Dizzy . Caminas a través de un castillo con forma de laberinto, recogiendo objetos y hechizos y usándolos en los lugares apropiados.

 

Puedes descargar la ROM, en el siguiente enlace: http://www.atarimania.com/game-atari-400-800-xl-xe-uczen-czarnoksieznika_5590.html




Nos trasladamos

Blogger se nos queda pequeño, así que este blog migra a  jujubegames.com