Cómo hacer un juego para la Game Boy original en pleno 2018: ‘Sheep It Up!’

sheep it up

Todos tenemos sueños de diminutos y el mio era inventar un videojuego para mi 1ª videoconsola: la Game Boy de Nintendo. Hoy se ha cumplido mi sueño porque he anunciado mi 1° videojuego para Game Boy en un cartucho de verdad: ‘Sheep It Up!’

En este capítulo hablaré de las tools que he aprovechado y de algunos de los escollos que he tenido que superar como novato para lograr que el proyecto se convirtiera en realidad.

‘Sheep It Up!’ (algo así como “¡Oveja arriba!”) es un videojuego arcade en el que una oveja tiene que ir ascendiendo colgándose a tiras de velcro voladoras. El concepto es simple, sin embargo el videojuego no tarda en convertirse en todo un reto: ¿Hasta dónde podrias subir sin caerte?

Como coleccionista de juegos que soy, quería generar este videojuego sin sacrificar ninguno de los títulos antiguos de Game Boy, de ahí que todo el proceso haya sido esquematizado específicamente para el videojuego: el pcb, la rom, el cartucho, la funda protectora y ¡hasta la pegatina! También intentamos que tuviera un precio razonable para que cualquier persona pueda gozar del juego: 15 dolares (+ gastos de envío). Funciona en cualquier modelo de Game Boy, desde el 1° modelo hasta la GBA SP, incorporando la Super Game Boy.

Sheepitup Cartoucheweb

Si aún teneis una Game Boy, podrias comprar un cartucho en la página web(www) del fabricante.

Las herramientas

En los 90, inventar un videojuego para una videoconsola de ocho bits era todo un desafío y hacía falta un equipo completo de profesionales cualificados. Para mí, los diseñadores, artistas y programadores de la época eran auténticos héroes porque podían inventar juegos tan maravillosos con las tools tan limitadas que tenían en comparación con todas las opciones que tenemos hoy en dia para inventar videojuegos.

En 2018 continua costando mucho trabajo inventar un videojuego para una consola de ocho bits. Sin embargo, gracias a las geniales comunidades de creadores de juegos caseros y de emuladores, tenemos a nuestra disposición todo un arsenal de tools que nos crean la vida mucho mas fácil. Sin ellas, una persona con un hobby como el mio jamás podría inventar un videojuego para la Game Boy por su cuenta. ¿Cuáles son esas herramientas?

Para empezar, el idioma de programación. En su día, todo el hardware de juegos se programaba con Assembly y aún es factible usarlo (de hecho, es lo recomendado). Sin embargo, ya no es la unica alternativa y hay muchos kits de desarrollo para videoconsolas de ocho y de 16 bits basados en idioma de programación C. Para la Game Boy, existe una tool genial que se llama Game Boy Developers Kit (GBDK).

A la hora de inventar los gráficos y el diseño, ya no es imprescindible usar papel gráfico y un escáner de mano. Por suerte, ahora podrias usar otros 2 softwares adicionales:

  • Game Boy Tile Designer (GBTD). Te admitirá dibujar objetos y teselas para después exportarlos a un formato binario para que la Game Boy lo pueda leer.
  • Game Boy Map Builder (GBMB). Este kit te admitirá inventar niveles e fotografias de fondo empleando las teselas dibujadas con GBTD (es como Tiled, sin embargo para Game Boy).

Gbtd

Finalmente, pese a que no menos importante, necesitamos una forma de probar que vuestro videojuego sirve y ahí es donde la modernidad es clave. Mientras que en los 90 los programadores tenían que usar cajas ICE muy caras, hoy logramos usar emuladores de software en cualquier ordenador.

Para probar vuestro juego, la preferible alternativa es BGB. Se intenta de un simulador para Game Boy muy exacto que llega con un detector de bugs muy intenso ¡Es la tool que vas a necesitar para inventar un videojuego que funcione!

Bgb El videojuego esta en la esquina superior derecha y el resto de ventanas terroríficas son las tools para arreglar los bugs.

Pero para estar totalmente seguro de que el videojuego funciona, deberás que probarlo en hardware de verdad. En los 90, la masa grababa su software en un chip EPROM y usaba cartuchos peculiares para conectar el chip a una Game Boy real. Aunque era un proceso muy eficaz, llevaba mucho tiempo y era muy caro. Hoy tenemos lo que se conoce como “Flashcarts”: cartuchos en los que podrias embocar una tarjeta SD con tu videojuego en la ROM para jugar en una Game Boy de verdad.

La idea es la misma, sin embargo las tools son mas accesibles y mas fáciles de usar. Existen muchos tipo de Flashcarts para Game Boy, sin embargo el preferible puede que sea el de Krikzz: el Everdrive Game Boy. El pasado veranillo sacaron un nuevo modelo mejorado, sin embargo yo utilicé la version antigua que había comprado hace tiempo.

Un flashcart de los 90 Un flashcart de los 90 vs. uno de nuestra década

A pesar de todas estas geniales tools que tenemos a nuestra disposición en 2018, inventar un videojuego en la actualidad para una videoconsola de 1989 continua siendo todo un reto, fundamentalmente para aquellas individuos que están acostumbradas a usar “herramientas modernas”, como Unity, Unreal Engine o Godot.

A continuidad voy a describir los primordiales desafíos a los que me enfrenté durante el desarrollo de ‘Sheep It Up!’, incorporando aquellas cosas que me sorprendieron sobre el fucionamiento de un videojuego de Game Boy.

Límite de tamaño

Empecemos por lo obvio: ‘Sheep It Up!’ es un videojuego suficiente simple, algo que se expone si tenemos en cuenta que todo el videojuego pesa solo 32KB. Así es: el código, las fotografias e inclusive los sonidos caben todo en exclusivamente 32KB. A modo de comparación, 32KB es el tamaño del logo de la Wikipedia en una dimensión muy pequeña:

sheep it up

Por supuesto, no todos los juegos para la Game Boy caben en 32KB. Para mí, se trataba de una limitación técnica el poder inventar un videojuego en un cartucho real. De hecho, los mejores juegos para la Game Boy y los mas famosos pesan mucho más:

  • Pokemon Rojo / Azul pesan 1024KB (¡Son enormes!)
  • Wario Land y La leyenda de Zelda: El despertar de Link pesan 512KB
  • Kirby Dream Land pesa 256KB
  • Gargoyle’s Quest pesa 128KB

En realidad, hay pocos títulos para la Game Boy que tengan solo 32KB y la totalidad son de los primeros años de la consola. Por ejemplo, tanto Alleway (uno de los juegos que sirvió de lanzamiento de la consola en Japón) y Tetris (juego de lanzamiento en EE.UU. y Europa) tienen 32KB. Ambos son títulos excelentes, sin embargo debido a la limitación de espacio de sus cartuchos son un tanto “limitados” en su alcance: una sola pantalla, pocos medios gráficos y de audio, etc.

Tetris Alleyway y Tetris son juegos de 32KB, como Sheep It Up!

CPU: jugando con la potencia portátil

La Game Boy tiene una CPU de 4MHz diseñada fundamentalmente para la consola (es una mezcla entre el procesador Z80 de Zilog y el 8080 de Intel). Con todo, el poder de proceso de la Game Boy es comparable al de la NES e inclusive algo mas intenso gracias al reducido tamaño de su pantalla y a la falta de colores en la foto (veremos mas sobre esto después).

A pesar de contar con solo 4Mhz, todos los juegos de la Game Boy dicen con una dimensión de 60 fps constantes. ¡Toma esa PS4 Pro y Xbox® One X!

Pero para un programador que acaba de acabar la universidad, el mayor desafío será trabajar con un procesador de ocho bits. Como posiblemente sabrás, todos los computadores usan 0 y 1 para funcionar datos. Un solo dígito, que puede tener 0 o 1 como valor, se llama “bit” (abreviatura de “binary digit (dígito binario)”, porque exclusivamente puede tener 2 valores diferentes). Un procesador es de ocho bits cuando puede funcionar ocho bits de documentos con una simple operación.

¿De qué forma influye a la hora de inventar videojuegos?

Pues bien, cuanto menos “bits” pueda funcionar la CPU, mas limitadas serán las variables durante el juego. Por ejemplo, en los juegos usamos muchos números enteros para representar valores: vida, velocidad, puntuación, etc.

Con ocho bits de datos, un entero puede almacenar números mas diminutos que una variable de 16 bits:

  • Variable entera de ocho bits: -127 a 128 (o 0 a 255 si no usa señal)
  • Variable entera de 16 bits: -32768 a 32767 (o 0 a 65535 si no usa señal)

Si aún te suena demasiado a chino, pongamos un ejemplo directo de ‘Sheet It Up!’

Sheepitup Score

Como podrias visualizar en esta imagen, la variable de puntuación consta de 5 dígitos y puede tener un rango de 0 a 99999. Desafortunadamente, es mucho mayor de lo que una variable entera puede almacenar. De hecho, ¡Ni siquiera una variable entera de 16 bits es suficiente para almacenar una puntuación tan “grande”!

Así que para poder registrar la puntuación en ‘Sheep It Up!’ tuve que usar no una, sino cinco variables enteras de ocho bits diferentes. Te invito a “descubrir” lo entretenido que fue controlar todas esas variables, fundamentalmente cuando añadí la alternativa de guardar la preferible puntuación, lo que cree comparar 2 valores almacenados entre 5 variables diferentes.

Programar en un metodo de ocho bits te obligará a pensar en respuestas complejas de este tipo todo el tiempo, mientras que los sistemas modernos simplemente usan variables de 32 o 64 bits que jamás suponen un dilema para sus programadores.

(Nota: para aquellos programadores de juegos mas experimentados, sé que podía haber sido mas efectiva empleando un int8 entero para almacenar un solo dígito entre 0 y 9. Sin embargo, sí que requería que cada variable pudiera estar entre 0 y 255 porque en realidad no se guarda el dígito de la puntuación de forma directa, sino la identificación de los píxeles utilizada para exponer dicho numero en la pantalla)

Un mundo, 2 planos

Todas las fotografias que se ven en una Game Boy están compuestas por 2 elementos: una capa de fondo (BKG) y muchos objetos en movimiento, además famosos como sprites (OBJ). Existe un límite de un máximo de 40 objetos en la pantalla con la limitación complementario de que la Game Boy no puede exponer mas de diez objetos en la misma línea.

Sheepitup Planes

En realidad, es un poco mas complejo porque hay una capa complementario de “ventana” que puede deslizarse de forma distinto del fondo. Normalmente se maneja para inventar la interfaz de cliente (puntuación, etc.). Sin embargo, esta capa es “no-transparente”: esconderá cualquier tipo de documentos gráficos en la capa de fondo que tiene detrás, por lo que, para simplificar, podrias pensar que existe una sola capa de “fondo” en una Game Boy sin embargo que puede inventar que una parte se mueva de forma independiente si lo necesitas.

¡La Game Boy ve cuatro colores!

Hablemos del dilema mas evidente: el modelo original de la Game Boy solo puede reproducir cuatro colores.

Sheepitup Colors 1

Se puede discutir que no se intenta realmente de gris claro y gris oscuro, sino mas bien verde claro y verde oscuro, sin embargo da lo mismo: exclusivamente podrias usar cuatro colores para inventar los dibujos. Por lo menos cuando contamos del fondo, ¡porque para los objetos es diferente!

Sheepitup Sprite1

De hecho, como podrias visualizar en la imagen, la oveja ha sido dibujada con solo tres colores. ¿Por qué? De hecho, dibujé el objeto en cuatro colores, sin embargo el 4° color (el negro) simplemente no se ve porque la Game Boy lo procesa como “color transparente”. De esta forma, los objetos no son “imágenes cuadradas”, sino que pueden tomar algunas maneras creando que podamos visualizar la foto de fondo que tienen detrás.

Sheepitup Sprite2

¿Significa que no puedo usar el negro para dibujar objetos?

Por supuesto que no, tal y como podrias visualizar en el objeto de la linea de “velcro”. Para este objeto, utilicé una paleta de colores distinto de 3+1: el “blanco” como color transparente y el “negro” para el objeto.

Sheepitup Sprite3

Las paletas de colores pueden ser divertidas

Aunque solo pueda usar cuatro colores, la Game Boy maneja tres paletas de colores distintos para exponer fotografias ¡Y es genial!

Sheepitup Palettes

Como podrias ver, hay una paleta individual de “4 colores” para la capa de fondo y 2 “paletas de “3 colores + 1 color transparente” para los objetos (cada objeto puede usar una u otra paleta de colores). Lo bueno de estas paletas de colores es que podrias asignar libremente cualquier color que quieras en cualquiera de las paletas. Esto te acepta inventar efectos resultones como el efecto de enfocado/desenfocado que hay en muchos videojuegos.

Sheepitup Fade Anim2

Para inventar un efecto de enfoque en una Game Boy, simplemente necesitas actualizar los colores en las tres paletas de colores. En el 1° paso, todos los huecos de las paletas están en blanco. Después, se pone gris claro el espacio para el color mas oscuro (negro) para desvelar la foto de forma progresiva. En el 3° paso, el gris claro pasa a ser gris oscuro, etc. Así hasta que se miren los cuatro colores en cada paleta de colores.

Con un procedimiento similar, logramos inventar que un caracter “parpadee” modificando los colores de su paleta en cada fotograma. Por ejemplo, es algo que se maneja en Super Mario Land cada vez que Mario se hace con una estrella y se vuelve invencible.

¡El planeta en mosaicos!

Hay una ultima cosa a tener en cuenta en el modo en el que la Game Boy simboliza las imágenes, o por lo menos para un programador de juegos acostumbrado a las ultimas tecnologías. Dado que la consola no tiene un “búfer de fotogramas” no podrias especificar el color de cada píxel en la pantalla de forma individual. De hecho, todas las fotografias en la pantalla son un conjunto de “teselas”, es decir, cuadrados de píxeles de 8×8. Esto se aplica tanto al fondo como a los objetos:

Sheepitup Tiles1

Esta técnica, diseñada para disminuir la suma de RAM de vídeo necesaria para exponer imágenes, implica que no podrias dibujar líneas a mano alzada en la pantalla de la Game Boy. Pero además es uno de los secretos que hace que la Game Boy sea apto de representar juegos tan lindos con una CPU de solo 4Mhz y solo 8KB de RAM de vídeo (has leído bien, he redactado kilobytes y no megabytes o gigabytes).

Sin embargo, uno de los inconvenientes de esta pantalla a modo de mosaico es que nuestros objetos “oveja” y “velcro” en realidad están compuestos por mas de un objeto. La oveja tiene 16×16 píxeles, por lo que en teoría necesitaría cuatro objetos de 8×8 para crearla. Por suerte la Game Boy además cuenta con un modo de representación de 8×16, lo que significa que en realidad cada objeto en ‘Sheep It Up!’ exclusivamente esta compuesto por 2 objetos en vez de cuatro.

Sheepitup Tiles2

¿Recuerdas que teníamos un límite de 40 objetos en pantalla con el limite complementario de que la Game Boy no puede exponer mas de diez objetos en la misma línea?

En este caso, significa que no logramos tener mas de 5 ovejas juntas en la misma línea, en vez de las diez que podrias haber pensado en un origen (porque la oveja se compone de 2 objetos desde el punto de vista de hardware).

Puntos a pantalla completa

No lo había hablado aún, sin embargo la dimensión de la pantalla de la Game Boy es de 160×144 píxeles, lo que significa que necesitas 20×18 = 360 teselas para tapar toda la pantalla.

Sheepitup Titletiles1

Desafortunadamente, la RAM de vídeo de la Game Boy es limitada (8KB) y solo puede almacenar 256 teselas diferentes. Esto significa que, si no usamos ningun truco en el código, no podrias exponer ninguna foto a pantalla completa:

Sheepitup Titletiles2

El secreto esta en reutilizar teselas. Tal y como podrias ver, la foto de teselas tiene mucho “espacio vacío”, lo que significa que una sola “tesela blanca” en RAM esta algunas veces en la imagen. En realidad, la foto de la pantalla en forma de mosaico exclusivamente maneja 178 teselas diferentes, lo que significa que aún queda espacio para algunos fragmentos extra si fuera necesario.

Sheepitup Rawtitletiles

No sé qué procedimiento usaban para reutilizar teselas en los 90, sin embargo hoy existe una tool muy buena que se llama Game Boy Tile Data Generator. Le pones una foto PNG (en cuatro colores) y generará de forma automatica por ti las teselas y el mapa de teselas necesarios para representarlos en una Game Boy. Obviamente, además detectará de forma automática y reutilizará las teselas que sean idénticas para salvar tanta RAM de vídeo como sea factible en la consola.

Gbtdg

A modo de información, la totalidad de las consolas de los 80 y los 90 funcionaban de forma parecido con una pantalla inspirada en teselas de 8×8: Nes, Master System, PC-Engine, Super Nintendo, Genesis, Game Boy, Game Gear…Las primeras videoconsolas a nivel mainstream que tuvieron un búfer de fotogramas fueron la PlayStation® y la Saturn, mientras que la 1ª consola de Nintendo que lo obtuvó fue la Game Boy Advance (la Lynx de Atari fue la 1ª consola de mano con píxeles individuales).

¡Por eso estudiar a “programar con teselas” en la Game Boy es una habilidad transferible si después deseas inventar proyectos en otra videoconsola retro!

Consejos de los profesionales: ¡Hacer objetos de cuatro colores!

Finalicemos con un diminuto consejo de los enormes programadores de Nintendo. Echa un mirada a esta captura de pantalla de Wario Land:

Warioland Coin

¿Puedes visualizar que la moneda, un objeto, ha sido dibujada con cuatro colores? ¿Cómo pudieron realizarlo si te he dicho que la Game Boy exclusivamente puede exponer tres colores por objeto?

Warioland Coin

La respuesta es sencilla: cada moneda esta hecha de 2 objetos y cada objeto maneja una paleta de colores diferente. Como podrias ver, si dividimos la moneda en 2 mitades, esta compuesta de 2 objetos de 8×16. Como siempre pasa con Nintendo, se presta mucha interés a los detalles: no es que simplemente juntarán 2 “mitades de objetos”, sino que las dibujaron con las teselas e hicieron que se sobrepusieran en 1 píxel ¡Para que la moneda tuviera mas aspecto de ser un único elemento!

Restricciones de sonido

Como vimos anteriormente, la Game Boy cuenta con limitaciones obvias en cuanto a la potencia de la CPU y en el apartado gráfico. Pero lo mismo se puede mencionar del audio. De hecho, a diferencia de los dispositivos modernos, la Game Boy no puede reproducir MP3 o leer archivos WAV. Para inventar sonidos y música en una Game Boy teneis que crearlos de forma dinámica empleando los cuatro “canales de audio” que tiene la consola, cada uno con una función diferente:

  • Canal 1: Nota y barrido puede reproducir un sonido (una nota) subiendo o bajando un tono.
  • Canal 2: Nota puede reproducir una nota sin ningun efecto especial.
  • Canal 3: Forma de onda puede reproducir maneras de ondas muy sencillas (codificadas en 4bits).
  • Canal 4: Ruido puede generar sonido de explosión o de motor.

Voy a repetirlo: para inventar un sonido con una Game Boy teneis que generarlo de forma tutorial controlando de forma directa estos cuatro canales de sonido. Por suerte, es algo suficiente sencillo: simplemente teneis que actualizar los valores de algunos de los registros del hardware. Cada canal de sonido esta controlado por cuatro o 5 registros de hardware (variables de 8bits) que definen el volumen, el tono, los efectos especiales, etc.

Configurando distintos valores en los registros que controlan un canal, podrias inventar que la Game Boy reproduzca una enorme gama de sonidos. Por ejemplo, aqui os dejo tres sonido de Sheep It Up! que he inventado empleando el canal de sonido 1, así como los valores de registros utilizados para generarlos:

Salto

NR10_REG = 0x15; NR11_REG = 0x96; NR12_REG = 0x73; NR13_REG = 0xBB; NR14_REG = 0x85; 

Caída al suelo

NR10_REG = 0x79; NR11_REG = 0x8D; NR12_REG = 0x63; NR13_REG = 0xC8; NR14_REG = 0x80; 

Cayendo (game over)

NR10_REG = 0x4F;   NR11_REG = 0x96;   NR12_REG = 0xB7;   NR13_REG = 0xBB;   NR14_REG = 0x85; 

Como podrias ver, establecer distintos valores para 5 variables te acepta generar efectos de sonido muy diferentes. Uno podría imaginarse que, para inventar sonidos, podrias optar por ir probando hasta dar con el sonido que quieres: pones valores aleatorios a los registros hasta que encuentres un sonido que te guste. Pero eso sería demasiado complicado y no tendría mucho sentido. Así que, por suerte, las tools modernas nos crean la vida mas fácil. En este caso, tengo que hablar de GB Sound Sample Generator.

Sfx 1 Primero configuras unos parámetros suficiente sencillos hasta hallar un sonido que te guste (dale a START para reproducir el sonido actual)

Se intenta de un software de Game Boy que se ejecuta en hardware real y que te acepta actualizar los valores de los registros del hardware de sonido de una forma muy intuitiva. En vez de establecer el precio bruto de “NR10_REG”, lo que harás será definir una frecuencia de sonido, un nivel de volumen, un tiempo de barrido, etc. Puedes visualizar este tool como un SFXR para la Game Boy. Pero si deseas exportar tu sonido, en vez de guardarlo en un archivo WAV, GB Sound Sample generator te ofrecerá los valores de registro de hardware correspondientes. Así que para reproducir un sonido en tu videojuego, simplemente teneis que introducir estos valores en tu codigo fuente.

Sfx 2 A continuidad solo teneis que sostener pulsado A+SELECT para visualizar los valores de registro brutos del hardware

Para Sheep It Up!, utilicé GB Sound Sample generator en una Game Boy Advance SP (la pantalla retroiluminada es mas fácil de leer), ejecutando la ROM en un Everdrive GB. Me pasé suficiente tiempo retocando los parámetros directamente en la consola y cuando encontré una buena mezcla pude copiar sencillamente los valores de la pantalla de la Game Boy al codigo fuente en mi ordenador.

Sfx 3 Para reproducir este sonido en tu juego, simplemente necesitas copiar los valores de registro de hardware en tu codigo fuente

A pesar de las limitaciones de audio, la Game Boy se maneja a dia de hoy como instrumento musical. En la escena del chiptune existen muchos artistas con talento que crean cortes estimulantes con una Game Boy empleando aplicaciones como LSDJ o Nanoloop. Por ejemplo, puede que hayas oído hablar de la leyenda irlandesa del chiptune Chipzel que compuso música para Super Hexagon o del artista francés Sidabitball que remezcló muchos éxitos de música pop de los 90.

Chipzel Sidabitball Chipzel (izquierda) y Sidabitball

Por desgracia para los programadores de videojuegos, LSDJ, la tool utilizada para componer estas canciones(mp3) innovadoras, maneja casi el 100% de los bienes de hardware de la Game Boy. Esto significa que podrias inventar música con la consola, sin embargo no podrias ejecutar un videojuego mientras reproduces dicha música. Por suerte, existen opciones que consumen menos bienes para inventar y reproducir música en la Game Boy.

1) Reproductor de música personalizado

La solucion mas fácil es inventar tu propio “reproductor de música”. Recuerda que la unica forma de inventar sonidos en la Game Boy es establecer los valores de los registros del hardware que controlan los cuatro canales de generación de sonido. De ahí que puedas inventar de forma sencilla tu propio “reproductor de música” almacenando “notas” en una matriz.

Cada “nota” es una mezcla unica de valores para cada registro del hardware. Si a continuidad defines el ritmo de la matriz para reproducir dichas notas, podrias tener una forma muy sencilla de inventar música y así fue como lo hice en el caso de Sheep It Up!. Aquí os dejo un diminuto vídeo del videojuego con sonido y música para que podáis oir el resultado:

Para ser mas específico, mis “notas” exclusivamente se reproducen en el canal de sonido 2. De hecho, los cuatro canales de sonido se usan tanto para efectos de sonido como para música. Así que si estás reproduciendo una nota en un canal, no podrias utilizarlo para reproducir un efecto de sonido al mismo tiempo.

Puesto que cada canal es mas bien “específico”, a veces puede ser preferible usar algunos canales solo para música, mientras que es preferible conservar otros canales para los efectos de sonido. Por ejemplo, el sonido “plip” que escuchas cada vez que la oveja se agarra a una cinta de velcro voladora se reproduce en el canal cuatro (ruido). Como se intenta de un sonido muy común en mi videojuego, decidí eludir usar este canal para música. Lo mismo vale para el canal 1 porque lo utilicé para el resto de efectos de sonido. Puesto que mis capacidades musicales son suficiente limitadas, decidí no usar las maneras de onda del canal tres y en su lugar me centré en los tonos del canal 2.

2) GBT Player y Carillon Player

Muchos juegos caseros usan la alternativa del “reproductor de música personalizado”. Por suerte, no es la unica alternativa disponible. Existe una librería de documentos que se llama GBT Player que puede convertir los módulos de música (en formato Impulse Tracker “.it”) para después reproducirlos en una Game Boy. Por supuesto existen algunas limitaciones en cuanto al tamaño de los samples, el numero de canales y los efectos de tono que podrias usar. Pero sin embargo te acepta componer música real en un tracker real, como OpenMPT, y después reproducirla en la Game Boy.

La guinda del pastel es que esta librería exclusivamente consume un 7-8% de los bienes de la CPU de la Game Boy, lo que deja mucha potencia de procesador para ejecutar el resto del programa. Además, es muy fácil de integrarlo con tu código, ya sea si decides programar tu videojuego en C con GBDK o montarlo con RGBDS. Carillon Player es una buena alternativa al GBT Player, pese a que deberás que usar el Carillon Editor para componer música en vez de tu tracker musical favorito.

Geometrix es un videojuego casero hecho por AntonioND, el fundador de GBT Player. La música maneja esta librería de datos.

Vayamos a la parte física: embocar el videojuego en un cartucho

Después de mucho trabajo con el código, los gráficos y el audio, el videojuego por fin estaba completo. Sin embargo, a estas alturas lo único que tenía era un archivo ROM. Por supuesto podía (y así lo hice) probarlo en algunas de mis Game boys que tengo en mi colección (en todas menos en la AGS-101), sin embargo para mí el proyecto no estaba completo porque el videojuego tenía que tener su propio cartucho personalizado para poder considerarlo como “acabado”.

Como mencioné al inicio, la ROM de ‘Sheep It Up!’ pesa solo 32KB, al equivalente que algunos de los primeros títulos para la Game Boy como ‘Tetris’ o ‘Alleway’. Sin embargo, la totalidad de los juegos para Game Boy son mucho mas enormes y van desde los 128KB hasta los 512KB, siendo los ‘Pokémon Azul’ y ‘Pokémon Rojo’ los mas enormes con sus gigantescos 1024KB (1MB). En los 90, cuanto mas enorme era el juego, mas costaba fabricar los cartuchos porque tenías que usar chips mas caro para almacenar juegos tan grandes. Pero a dia de hoy, casi todos cuestan lo mismo. Entonces, ¿por qué me puse el límite de 32KB?

La respuesta es que quería ser apto de obtener el videojuego en un cartucho nuevo. Como te podras imaginar, Nintendo hace mucho tiempo que dejó de fabricar cartuchos para la Game Boy (ejem, quiero mencionar Game Paks). Así que existen 2 respuestas opciones para inventar tu propio videojuego en cartucho a dia de hoy:

1) Cartmodding

La 1ª alternativa se denomina “cartmodding” y consiste en reciclar juegos antiguos de la Game Boy. Los juegos que salieron al comercio durante la era comercial de la Game Boy eran cartuchos que no se podían reescribir, por lo que para convertir el videojuego almacenado en el cartucho teneis que abrirlo, desoldar el chip de memoria y cambiarlo por otro chip de memoria en el que has guardado tu propio archivo ROM. Esta solucion te acepta inventar juegos de cualquier tamaño. Sin embargo, como coleccionador de juegos que soy, no quería destrozar ningun videojuego para la Game Boy para fabricar el mio.

Cartmodding Un ejemplo de cartmodding. Un nuevo chip de memoria que incluye un videojuego casero ha sido soldado dentro de un cartucho viejo.

2) Cartucho personalizado

Así que la segunda alternativa es fabricar un nuevo cartucho desde cero. Como no sé nada de electrónica, empecé a investigar masa en Internet que fuera apto de edificar cartuchos para la Game Boy. Tras muchos intentos fallidos, tuve la suerte de contactar con Catskull. Se intenta de todo un manitas de la electronica que construye y vende mucho hardware vinculado con la Game Boy en su bazar Catskull Electronics.

Entre otras algunas cosas, ha esquematizado un equipo para conectar la Game Boy a una interfaz MIDI, lo que le acepta a los músicos usar la Game Boy con artefactos y sintetizadores de verdad. También ha esquematizado su propio cartucho para la Game Boy donde todo ha sido inventado a partir de cero: la PCB, los chips, las carcasas e inclusive las pegatinas (nada ha sido reciclado a partir de juegos viejos). Esta era la solucion perfecta para mí.

Catskull Pcb Lq El cartucho original PCB esquematizado por Catskull y aprovechado para ‘Sheep It Up!’

Pero es aún mejor: tras un par de correos electrónicos, Catskull me dijo que llevaba tiempo queriendo difundir juegos caseros bajo su propia compañia y que mi videojuego era la posibilidad perfecta para ser el 1° título. Así que nos pusimos a trabajar juntos: yo hago el software y el hace el hardware. La unica pega para esta alternativa es que el cartucho para la Game Boy de Catskull exclusivamente puede almacenar un videojuego de 32KB. ¿Por qué?

Originalmente, la Game Boy estaba diseñada para poder tener camino a exclusivamente 32KB de documentos ROM. Para poder tener juegos con mas de 32KB de datos, necesitas “navegar” por todos los documentos del cartucho entrando cada vez exclusivamente a un apartado de todos los documentos ROM. A este procedimiento se le conoce como “Bank Switching”: todos los documentos de ROM están segmentados en bancos de 16KB y podrias intercambiarlos cada vez que quieras (con algunas limitaciones). Sin embargo, para poder inventar bank switching el cartucho tiene que tener un chip adicional: el “Memory Bank Controller” (MBC).

Existen muchos chips (MBC1, MBC5, etc.) que aceptan mayores tamaños de ROM, RAM a base de baterías para guardar el juego, etc. Desafortunadamente, de instante no existe una solucion real para generar nuevos cartuchos desde cero con un chip de dichas características.

Así que la masa que esta creando juegos caseros que pesan mas de 32KB comúnmente tiran de “cartmodding” para poder reutilizar el chip MBC de los cartuchos de juegos antiguos que “reciclan”. Otra solucion es comprar copias ilegales de juegos de la Game Boy y reutilizarlos. De hecho, los creadores chinos hace años que han obtenido “clonar” el chip MBC para poder generar copias piratas de juegos enormes como ‘Pokémon’.

Además, estos cartuchos piratas usan chips EEPROM en vez de los chips ROM de los juegos antiguos y comúnmente no se pueden “reutilizar” y actualizar el videojuego que llevan. Para ello tendrías que usar un intercambiador de cartuchos como el BennVenn’s Joey. Existen muchos juegos caseros que pesan mas de 32KB y que han salido empleando esta opción.

Chinese2 Un cartucho pirata hecho en China. Este cartucho se puede reutilizar, sin embargo otros no

En el caso de ‘Sheep It Up!’, quería generar cartuchos 100% originales para eludir destruir juegos originales de la Game Boy. Tuve mucha suerte al hallar un socio como Catskull que fabrica sus propios cartuchos, pese a que tuviera que limitarme a 32KB de tamaño total.

¿Y como se crean los cartuchos “personalizados”? Le pedí a Catskull que hiciera imagenes de los distintos pasos a continuar para montar sus propios cartuchos. Como veréis, cada cartucho se monta a mano.

1) Se pone la PCB en una placa.
Catskull Assembly 2

2) Se pone una plantilla de acero inoxidable sobre la PCB para poder poner la pasta de soldadura.
Catskull Assembly 1

3) Normalmente hago lotes de 18-20 tarjetas a la vez y aplico la pasta de soldadura a todo el lote.
Catskull Assembly 3

4) Ahora toca ubicar de forma tutorial los condensadores y las resistencias sobre las tarjetas. Después pongo los chips de memoria flash en cada tarjeta.
Catskull Assembly 4

5) Se ponen las tarjetas en una placa de horno para inventar el reflujo. Literalmente, tenemos que “hornear” cada tarjeta para soldar cada chip a las tarjetas. Después puedo coger cada PCB y poner la ROM del videojuego en el chip de memoria.

Catskull Assembly 5

6) Después se pone la PCB en una funda de cartucho con una etiqueta preciosa hecha por una imprenta profesional.

Sheepitup Cartoucheweb

7) Después de probarlo todo de forma minuciosa para verificar que el cartucho sirve a la perfección en el hardware real, ¡el videojuego esta listo y se puede enviar al gamer que lo haya pedido!

Después de toda esta información técnica, me gustaria dar una opinión mas personal sobre lo que este proyecto ha significado para mí. Para poner las cosas en contexto, la charla que mas me ha basado de todas las que he visto es “Cómo lograr de verdad que tus sueños de la infancia se cumplan” de Randy Pausch. Realmente la recomiendo. Se intenta de una lección brillante sobre como visualizar la vida desde un punto de vista maravilloso, inclusive en los días mas oscuros. Para tener una vida que tenga sentido, Randy Pausch nos invita a intentar lograr aquellos sueños que teníamos cuando éramos diminutos y a apoyar a los demás a que cumplan sus sueños.

Entre los primeros sueños de mi serie estaba “crear un videojuego para la Game Boy de Nintendo”. La Game Boy fue mi 1ª videoconsola y siempre obtendrá un lugar especial en mi corazón. Durante años estuve diciéndome a mí mismo que algún dia haría un videojuego, sin embargo siempre tenía “cosas mas fundamentales que hacer” como trabajar en proyectos con los que vencer dinero para poder pagar el alquiler. Hasta que un dia me encontré por casualidad con la pagina de BitBitJam, una sociedad de talleres para la creación de juegos en consolas retro. Ahí fue cuando recordé las frases del erudito Randy Pausch: ¿Qué pasaría si, por una vez, intentara trabajar en algo con la unica misión de cumplir uno de los sueños de mi infancia?

Así que un mes(30dias) antes de que empezaran los talleres decidí informarme sobre el tipo de tools que existen para inventar juegos para la Game Boy. Durante los talleres me pasé una semana entera (estaba de vacaciones) para inventar un modelo de ‘Sheep It Up!’. Después de los talleres, seguí laborando en el juego, puliéndolo, refinándolo, optimizándolo, redibujándolo… hasta que estuve satisfecho con el resultado. Mientras tanto además me puse a mirar como inventar cartuchos para el videojuego y fue cuando tuve la suerte de encontrarme con Catskull, alguien que podía realizarlo y que tenía el gusanillo de inventar una compañia de difusión de juegos caseros.

Recuerda que mi objetivo real no era difundir un videojuego, sino cumplir uno de los sueños de mi infancia y en mi sueño, podía jugar el cartucho de videojuego que había inventado en mi Game Boy

Como podrias ver, la videoconsola que tenía de diminuto esta para el arrastre: ya no se revelan algunas columnas de píxeles, los botones están desgastados y hay un rayonazo vertical en la pantalla. Pero aún funciona. No puedo poner en frases lo que se siente al jugar un videojuego que TÚ has inventado en la mismísima consola con la que pasaste tanto tiempo jugando de niño. Lo único que puedo mencionar es que, en este exacto momento, mi yo de nueve años esta muy orgulloso de la persona en la que se ha transformado de adulto y exclusivamente eso es lo preferible que me podía haber pasado tras efectuar este proyecto.

Mygb 1 Lq Sigue funcionando 25 años después y puede ejecutar un videojuego fabricado en 2017

Compartiendo el sueño: el feedback de los jugadores

Es genial poder inventar un videojuego que te va a gustar, sin embargo es mucho preferible si otras individuos además pueden disfrutarlo. Cuando terminé el proyecto, sabía que ‘Sheep It Up!’ era un videojuego sencillo, así que no tenía algunas expectativas al respecto. Sin embargo, los comentarios que he recibido me han asombrado gratamente.

De hecho, a pesar de (o gracias a) la simplicidad del juego, a los que lo han probado realmente les ha gustado. La jugabilidad es lo suficiente sencilla como para estudiar a jugar en cuestión de segundos, sin embargo no tarda en engancharte para que quieras echar “otra partida” e intentar superar tu preferible puntuación. Por cierto, ¡mi preferible puntuación hasta el instante es de 147 puntos! Pero lo que mas me encanta de la sociedad de juegos retro es la pasión atras de la totalidad de los jugadores y es algo que puede traer sorpresas muy gratas.

Para empezar, algunas individuos se quejaron de que el videojuego no venía en “una caja”. Yo colecciono los juegos en cartuchos sin sus respectivas cajas (por cuestiones de dinero y de espacio) por lo que no se me pasó por la cabeza una version con una caja. Pero después me di cuenta de que hubiera sido una buena idea brindarle a la masa lo que quiere y uno de los fans del juego, Cyph, fue mas allá y se hizo su propia caja para el videojuego reutilizando una caja de un videojuego de la Nintendo DS.

No sé a ti, sin embargo a mí el efecto me parece genial. Para aquellos a los que le interese, podrias inventar tu propia caja en casa. Simplemente necesitas una caja de un videojuego de la Nintendo DS, quitar 2 pequeñas piezas de policarbonato que hay dentro y poner esta preciosa carátula diseñada por Cyph.

Box Cyph Una preciosa caja personalizada para ‘Sheep It Up!’ creada por Cyph, un fan del juego, con una caja de Nintendo DS

Otra curiosidad sobre el videojuego es que fue mostrado durante una de las mayores convenciones de juegos del mundo: la Paris Game Week (300.000 visitantes, mas que E3 o la Tokyo Game Show). ¿Cómo terminó un videojuego casero para la Game Boy en el mismo evento que los últimos juegos AAA de la industria? En este caso se lo tengo que agradecer a OrdiRetro, una asociación francesa dedicada a la historia de los juegos y mas específicamente a los nuevos juegos sacados para consolas y computadores antiguos.

Esta asociación tenía un puesto en el evento para exponer una selección de juegos y gracias a mi amigo Julián Álvarez se enteraron de que el videojuego existía y me propusieron presentarlo durante el evento.

Parisgameweek ‘Sheep It Up!’ en una Super Game Boy durante la Paris Game Week 2017 ¡Gracias OrdiRetro!

Pero algo así además puede pasarte sin que conozcas a alguien en concreto. Justo después de que saliera el videojuego lo compraron 2 entusiastas de la Game Boy alemanes que llevan la pagina web(www) DMGpage. Pero no exclusivamente lo compraron, sino que además lo presentaron durante una convención de juegos retro: la Retro-Börde en Hessen, Alemania. Así que algunas individuos pudieron jugar al videojuego en una Super Game Boy en una convención de juegos en Alemania gracias a 2 fans de la Game Boy. Es algo de lo que además estoy muy agradecido.

Retroborse ‘Sheep It Up!’ mostrado en una Super Game Boy durante la Retro-Börse en Hessen. ¡Gracias DMGpage!

Cuando haces un videojuego casero para una videoconsola retro no lo haces por el dinero o por la fama. Se fabrican muy escasas copias de estos juegos y comúnmente solo lo van a comprar un par de miles de individuos o como mucho cientos de individuos si el videojuego es muy bueno. De lo que sí podrias estar seguro es de que las individuos que lo compren realmente se interesarán por el videojuego y de que son tan apasionadas de los juegos retro como tú (o inclusive más). Así que, si te ha encantado este capítulo sobre como inventar un videojuego para la Game Boy en la actualidad, ¿por qué no pruebas a inventar uno por tí mismo?

Como podrias visualizar hay algunas tools sencillas para inventar un videojuego para la consola de mano mas mítica de la historia. No te harás rico creando un videojuego para la Game Boy, sin embargo te divertirás mucho creándolo y puede que además puedas inventar que otros pasen un buen rato jugando con tu juego.

Así que confio que te haya encantado este analisis y que te entren ganas de probar el planeta del desarrollo de juegos retro. Mientras tanto, si aún teneis una Game Boy por casa, no te olvides de que podrias adquirir un precioso cartucho de Sheep It Up por solo 15 dólares en la pagina web(www) de Catskull games ¡Cada cartucho se ensambla a mano antes de su envío!

Este capítulo se intenta de una republicación íntegra del capítulo “Making a Game Boy game in 2017: A “Sheep It Up!” Post-Mortem” redactado por Doctor Ludos en Gamasutra.

Doctor Ludos es un diseñador de juegos indie/amateur y socio de Ludoscience, un laboratorio de exploración científica dedicado al repaso de los videojuegos.

También te recomendamos

Es muy complicado no amar este concepto de renovacion de la Game Boy de 1989

Techno, drogas y Playstation: como las carreras futuristas de 'Wipeout' transformaron los juegos para siempre

Cómo organizar preferible los beneficios en la Nube que tenemos a punto de reventar


La novedad Cómo inventar un videojuego para la Game Boy original en pleno 2018: ‘Sheep It Up!’ fue publicada originalmente en Xataka por Doctor Ludos .


Xataka

Todo lo relacionado:



Agradecemos a la fuente original por la información que nos ayudo a crear este articulo.

También puedes revisar estas noticias relacionadas.

Tags: #¿Cómo #'Sheep #2018 #Game #hacer #juego #original #para #pleno

Deja un comentario

Author: 
    author