Como é criar um jogo para o Game Boy em 2017

imagem

Todo mundo teve um sonho de infância. Pessoalmente, eu sonhava em criar um jogo para o meu primeiro console: Nintendo Game Boy. Hoje, meu sonho se tornou realidade: lancei o primeiro jogo do Game Boy em um cartucho real : Sheep It Up!

Neste artigo, falarei sobre as ferramentas que usei e os obstáculos que um iniciante teve que superar para criar um projeto. O artigo é muito longo, portanto, está dividido em duas partes:


O jogo


"Sheep It Up!" - Este é um jogo de arcade no qual as ovelhas devem subir, aderindo às faixas voadoras de velcro. O conceito é simples, mas o jogo rapidamente se torna bastante complicado: até onde você pode subir sem cair?


Eu próprio sou um colecionador de jogos, então não queria que nenhum jogo vintage do Game Boy sofresse ao criar meu projeto. Portanto, tudo foi criado especificamente para o jogo: placa de circuito impresso, ROM, shell, capa protetora e até um adesivo! Também procuramos manter um preço razoável para que todos pudessem desfrutar do jogo: US $ 15 (+ frete) . Ele será executado em qualquer modelo de Game Boy, desde o primeiro até o GBA SP, incluindo o Super Game Boy.


Se você ainda tem um Game Boy, pode comprar um cartucho no site do editor:

https://catskullgames.com/sheep-it-up

Restrições sonoras


Como entendemos desde a primeira parte do artigo , o Game Boy tem limitações óbvias de energia e gráficos da CPU. Mas o mesmo pode ser dito do som. E, de fato, diferentemente das máquinas modernas, o Game Boy não pode tocar música MP3 ou ler arquivos de áudio WAV. Para criar sons e músicas para o Game Boy, você precisa gerá-los dinamicamente usando os quatro "canais de som" integrados ao console. Cada canal tem sua própria função:

  • Canal 1 - Tom e varredura: podemos tocar som (tom) com aumento ou diminuição da afinação.
  • Canal 2 - Tom: reproduz um tom sem um efeito especial.
  • Canal 3 - Forma de onda: Pode reproduzir formas de onda muito simples (codificadas em 4 bits).
  • Canal 4 - Ruído: pode gerar sons de explosões ou motores.

Vamos repetir novamente: para reproduzir som no Game Boy, você precisa gerá-lo manualmente, controlando diretamente esses quatro canais de som . Felizmente, isso é bastante simples: basta alterar os valores de vários registros de hardware. Cada canal de som é controlado por 4-5 registros de hardware (variáveis ​​de 8 bits) que determinam volume, afinação, efeitos especiais, etc. Ao definir valores diferentes para os registros que controlam o canal, podemos fazer o Game Boy tocar uma ampla gama de sons. Por exemplo, aqui estão três sons de Sheep It Up! que criei usando o canal de som 1 e os valores correspondentes do hardware são registrados:

Jump



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

Aterragem



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

Queda (final do jogo)



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

Como você pode ver, atribuir 5 valores diferentes a variáveis ​​nos permite criar efeitos sonoros muito diferentes. Você pode pensar que, para criar sons, você deve passar por tentativa e erro: insira valores aleatórios nos registros até obter um som agradável. Mas isso seria chato e sem sentido. Portanto, ferramentas modernas podem facilitar nossa vida . Deixe-me apresentar-lhe o GB Sound Sample Generator .


Primeiro, configuramos parâmetros convenientes para encontrar o som certo (pressione START para verificar o som atual)

Este é um programa para Game Boy, totalmente compatível com hardware real. Permite alterar os valores dos registros de som do hardware de maneira conveniente para o usuário. Em vez de definir valores NR10_REG brutos, podemos especificar a frequência do som, o nível do volume, a duração do sinal de varredura etc. Você pode considerar essa ferramenta semelhante ao SFXR para Game Boy. Mas para exportar o som, em vez de salvar o arquivo WAV, o gerador de GB Sound Sample exibe os valores correspondentes do registro de hardware. Ou seja, para reproduzir o som no seu jogo, basta inserir esses valores no código fonte.


Então você precisa pressionar e segurar A + SELECT para exibir os valores brutos correspondentes dos registros de hardware

Para trabalhar em Sheep It Up! Usei o gerador GB Sound Sample no Game Boy Advance SP (uma tela com luz de fundo é mais conveniente) . O programa ROM foi lançado no Everdrive GB . Passei bastante tempo definindo os parâmetros diretamente no console e, quando finalmente encontrei a combinação certa, simplesmente copiei os valores da tela GB para o código-fonte no computador.


Copie os valores dos registros de hardware para o código-fonte

Música Chiptune!


Apesar das capacidades limitadas de som, hoje o Game Boy é usado como instrumento musical. Muitos talentosos compositores de cenas de chiptune criam faixas energéticas no Game Boy usando programas como LSDJ ou Nanoloop . Por exemplo, você deve ter ouvido falar sobre o tunel irlandês Chipzel , chip chip, que escreveu a música para o Super Hexagon , e sobre o bruxo francês Sidabitball , que remixou muitos hits da música pop dos anos 90 .


Chipzel e Sidabitball

Infelizmente para nós, desenvolvedores de jogos, a ferramenta LSDJ usada para compor essas músicas incríveis consome quase 100% dos recursos de hardware do Game Boy. Portanto, você pode escrever músicas maravilhosas, mas não poderá iniciar o jogo enquanto essa música estiver tocando no console. Felizmente, existem alternativas menos intensivas em recursos para criar e tocar música no Game Boy.

1) Próprio music player


A solução mais minimalista é criar seu próprio "music player".
Não esqueça que a única maneira de reproduzir sons no Game Boy é definir os valores dos registros de hardware que controlam os quatro canais de geração de som. Portanto, é bastante simples criar seu próprio "music player", salvando as "notas" em uma matriz. Cada "nota" é uma certa combinação de valores para cada um dos registros de hardware. Se você definir o ritmo com o qual passaremos por essa matriz para tocar “notas”, obteremos uma maneira muito simples de tocar música. Foi exatamente o que eu fiz no Sheep It Up! Aqui está um pequeno vídeo de jogabilidade com som e música para que você possa ouvir o resultado:


De fato, minhas “notas” são tocadas apenas no canal de som 2. Sim, os quatro canais de som são comuns aos efeitos sonoros e à música. Portanto, se tocarmos uma nota em um canal, ela não poderá ser usada para tocar simultaneamente um efeito sonoro . E como cada canal é um pouco “especial”, às vezes é preferível usar alguns canais apenas para música, enquanto outros são deixados para efeitos sonoros. Por exemplo, um som de "rangido" que é ouvido quando uma ovelha gruda em um velcro voador é reproduzido no canal 4 (ruído). Como esse é um som muito frequente no meu jogo, decidi não usar esse canal para música. O mesmo se aplica ao canal 1, que eu usei para todos os outros efeitos sonoros. Como não sou um grande especialista em música, decidi não usar as ondas do canal 3 e, em vez disso, trabalhar com os tons do canal 2.

2) GBT Player e Carillon Player


Muitos jogos caseiros usam seu próprio music player. No entanto, essa não é a única solução. Existe uma biblioteca chamada GBT Player que pode converter módulos de música (no formato Impulse Tracker ".it") para reprodução no Game Boy. Obviamente, existem muitas restrições no tamanho das amostras, no número de canais e nos efeitos das notas. No entanto, a biblioteca permite compor músicas reais em um rastreador de música real, por exemplo, OpenMPT e depois reproduzi-lo no Game Boy. Mais importante ainda, a biblioteca consome apenas 7-8% dos recursos da CPU do Game Boy, deixando uma tonelada de poder de computação para executar o jogo. Além disso, é muito fácil integrá-lo ao seu código se você decidir escrever um jogo em C usando GBDK ou em assembler usando RGBDS. Uma boa alternativa ao GBT Player é o Carillon Player , no entanto, você terá que usar o Carillon Editor para compor músicas.


Geometrix é um jogo homebrew do GBT Player AntonioND. Para música, esta biblioteca é usada.

Ficando em forma: gravando um jogo em cartuchos


Depois de um longo trabalho no código, gráficos e som, o jogo está finalmente pronto. Mas, neste ponto, só temos o arquivo ROM. É claro que posso testar ativamente muitos modelos diferentes de Gameboy da minha coleção (eu tenho todos, exceto o AGS-101) . Mas não senti que o projeto estivesse pronto: na minha opinião, para ser considerado "concluído", o jogo deveria ter seu próprio cartucho .

Como eu disse na primeira parte do artigo , toda a ROM do jogo Sheep It Up! Ele pesa apenas 32K, como nos jogos anteriores do Game Boy, como Tetris e Alleyway . Mas, na verdade, a maioria dos jogos para o Game Boy é muito maior, de 128 KB a 512 KB, e o maior jogo Pokemon Blue e Red ocupa monstruosos 1024 KB (1 MB). Nos anos 90, quanto maior o jogo, mais caros os cartuchos estavam em produção: para armazenar jogos grandes, eram necessários chips mais caros. Mas hoje eles permanecem quase iguais. Então, por que estou limitado a um jogo de 32 kilobytes?

A resposta é que eu queria poder lançar o jogo nos cartuchos fabricados hoje. Como você pode imaginar, a Nintendo deixou de produzir cartuchos para Game Boy (Game Pak-s) . Portanto, hoje, para criar seu próprio cartucho, existem duas soluções:

1) Modificação de cartuchos (Cartmodding)


A primeira opção, chamada "cartmodding", é reciclar jogos antigos do Game Boy. Os jogos lançados durante a era comercial do Game Boy foram armazenados em cartuchos não regraváveis. Portanto, para substituir o jogo armazenado neles, é necessário abri-los, remover o chip de memória e substituí-lo por outro chip de memória, no qual a ROM do seu jogo está carregada. Esta solução permite criar jogos de qualquer tamanho. Mas como colecionador de jogos, eu não queria destruir os cartuchos Game Boy existentes para a produção do meu jogo.


Um exemplo de modding de cartão. Um novo chip de memória com um jogo de homebrew é soldado em um cartucho antigo

2) Próprio cartucho


A segunda opção é criar um novo cartucho do zero. Como não sou especialista em eletrônica, comecei a pesquisar na Internet por pessoas que pudessem montar cartuchos Game Boy. Depois de várias tentativas frustradas, tive a sorte de encontrar Catskull. Este é um incrível assistente de eletrônica, ele cria e vende muitos equipamentos relacionados ao Game Boy em sua loja de eletrônicos em Catskull . Entre outras coisas, ele desenvolveu um dispositivo para conectar Gameboy à interface MIDI, que permite aos músicos usar o Game Boy com instrumentos e sintetizadores reais. Ele também desenvolveu seu cartucho Game Boy. Tudo foi refeito para este cartucho: placa de circuito impresso, chips, conchas, até adesivos e peças novas - nada foi retirado dos jogos anteriores. Foi a solução perfeita para mim.


Catskull projetou o PCB original que eu usei para Sheep It Up!

Mas tudo ficou ainda melhor: depois de uma breve correspondência, Catskull me disse que durante muito tempo eu queria criar uma empresa para a publicação de jogos caseiros, e que o meu jogo seria uma grande oportunidade para isso! Portanto, juntamos forças: eu faço software, ele está envolvido em hardware . A única limitação nesta solução é que apenas 32 KB podem ser armazenados em um cartucho de Catskull Game Boy . Porque

Inicialmente, o console do Game Boy deveria ter acesso a apenas 32 KB de dados da ROM. Para criar jogos maiores que 32 KB, você precisa navegar por todos os dados no cartucho e obter acesso a apenas uma subseção de todos os dados da ROM. Esse método é chamado de comutação bancária : todos os dados da ROM são divididos em bancos de 16 KB cada, e podemos alternar entre eles a qualquer momento (com certas restrições). No entanto, para executar a troca de banco, o cartucho deve ter um chip adicional : “Memory Bank Controller” (MBC). Existem vários chips (MBC1, MBC5 etc.) que aumentam o tamanho da ROM, permitindo que você use a RAM para salvar jogos alimentados por bateria, etc. Infelizmente, no momento não existe uma solução pronta para criar novos cartuchos com esse chip a partir do zero.

Portanto, as pessoas que criam jogos homebrew maiores que 32K geralmente usam modding de cartões para usar o chip MBC do cartucho antigo do Game Boy, que eles “reciclam”. Outra solução é comprar cópias falsas de jogos reais de Game Boy, seguidos por um piscar de olhos. Muitos anos atrás, os fabricantes chineses aprenderam a "clonar" um chip MBC para criar cópias piratas de jogos grandes como Pokemon . E como esses cartuchos pirateados usam chips EEPROM em vez de chips ROM de jogos antigos, eles geralmente podem ser refeitos para substituir o jogo armazenado no cartucho. Para fazer isso, use um gravador de flash como o Joey da BennVenn . Vários jogos de homebrew maiores que 32K usaram essa abordagem.


Um cartucho pirata fabricado na China. Você pode fazer o reflash escrevendo seu jogo, mas outros não podem fazer o reflash (mais sobre isso aqui )

Para fazer Sheep It Up! Eu queria criar cartuchos completamente novos para evitar a destruição dos jogos originais do Game Boy. Tive muita sorte de unir forças com a Catskull, que produz seus próprios cartuchos, apesar de ter que me limitar a 32 KB de memória compartilhada.

Asse cartuchos!


Então, como você faz seus próprios cartuchos? Pedi à Catskull para tirar fotos das etapas individuais de montagem do cartucho. Como você pode ver, cada cartucho é montado manualmente:

1) A placa de circuito está inserida no hardware.


2) Um estêncil de aço inoxidável é aplicado à placa de circuito impresso para a aplicação de pasta de solda. Esta pasta permitirá que você solde o chip de memória na placa.


3) Geralmente faço lotes de 18 a 20 cartuchos de cada vez. A pasta de solda já foi aplicada a este lote.


4) Eu sei como selecionar manualmente capacitores e resistores e colocá-los nas placas. Então eu coloquei chips flash em cada placa.



5) As placas estão dispostas na grade do forno de refluxo. Nós literalmente “assamos” cada placa para soldar um chip nela. Agora eu posso pegar cada uma das placas e escrever a ROM do jogo no chip de memória.



6) Em seguida, o cartão é inserido no invólucro do cartucho de jogo com um belo adesivo feito em uma impressora profissional.



7) Após uma verificação completa do cartucho em equipamentos reais, o jogo está pronto para ser enviado ao jogador que o solicitou!

Realização de um sonho de infância


Depois de todas essas informações técnicas, gostaria de compartilhar um sentimento mais pessoal sobre o que esse projeto significa para mim. Para entender o contexto, recomendo que você assista ao vídeo mais inspirador do meu relógio "Realizando seus sonhos de infância", de Randy Posh. Eu recomendo que você veja. Esta é uma ótima lição sobre como perceber a vida com um senso de milagre, mesmo nos dias mais difíceis. Para viver uma vida plena, Randy Posh sugere que tentemos realizar os sonhos das crianças e ajudar outras pessoas a realizá-las.


No topo da minha lista pessoal de sonhos de infância, estava criando um videogame para o Nintendo Game Boy. O Game Boy foi meu primeiro console de videogame e sempre ocupará um lugar importante no meu coração. Por muitos anos eu disse a mim mesma que algum dia criaria um jogo para ela. Mas sempre tive “assuntos mais importantes”, por exemplo, trabalhando em um projeto que me trouxe dinheiro. Finalmente, um dia me deparei com um congestionamento de jogo BitBitJam dedicado à criação de jogos para ferro retrô. Então me lembrei das palavras do sábio Randy Posh: e se pelo menos uma vez eu tentasse concluir um projeto sem esperar mais nada além da realização de um sonho de infância?

Portanto, cerca de um mês antes do início do congestionamento, comecei a estudar várias ferramentas para criar jogos para o Game Boy. Então, já durante o congestionamento, passei uma semana inteira (tirei férias) para criar um protótipo Sheep It Up! Após o engarrafamento, continuei trabalhando no jogo, polindo, aprimorando, otimizando e redesenhando ... até ficar satisfeito com o resultado. Enquanto isso, eu estava procurando maneiras de criar cartuchos reais para o jogo. Tive muita sorte de conhecer Catskull, que estava envolvido em sua fabricação, e secretamente sonhava em criar minha própria empresa para a publicação de jogos caseiros. No final, criei e lancei um jogo real para o Game Boy, vendido em cartuchos físicos. Mas por que os cartuchos são tão importantes? Eu não poderia parar de distribuir a versão eletrônica do jogo online, assim como muitos outros desenvolvedores de jogos caseiros?

Não se esqueça - meu verdadeiro objetivo não era o lançamento do jogo, mas a realização de um sonho de infância. E, no meu sonho, eu podia brincar com um cartucho que eu fiz em um Game Boy real , como foi o caso de todos os outros jogos que eu comprei quando criança. Aqui está um vídeo de como eu testo o jogo em um Game Boy real, comprado por meus pais no Natal, quando eu tinha nove anos:


Como você pode ver, o console dos meus filhos já viu muito: muitas colunas de pixels não são mais exibidas na tela, os botões estão desgastados e a tela apresenta um enorme arranhão vertical. Mas ela ainda trabalha. Não consigo expressar em palavras os sentimentos que surgiram durante o jogo no console do cartucho criado por ME. Tudo o que posso dizer é que, neste exato momento das nove, eu estava muito orgulhoso do adulto que ele havia se tornado. E esse sentimento por si só foi o melhor resultado que pude obter desse projeto.


O console ainda funciona após 25 anos e foi capaz de lançar um jogo lançado em 2017!

Eu compartilho um sonho: críticas de jogadores


Portanto, criar um jogo principalmente para sua própria alegria é o melhor. Mas a alegria pode se tornar ainda maior se outras pessoas puderem jogar . No final do projeto, eu conhecia o Sheep It Up! acabou sendo um jogo simples, então as expectativas não eram muito altas. Mas o feedback recebido dos jogadores ainda me surpreendeu!

Apesar (ou graças) da simplicidade do jogo, os jogadores realmente gostaram . A jogabilidade é simples o suficiente para entendê-la em segundos, mas rapidamente desaparece - "mais um, o último jogo a quebrar seu recorde". A propósito, meu recorde atual é de 147 pontos ! Mas o que eu mais gosto na comunidade de retrogamer é que o amor é o principal fator para a maioria dos jogadores. E isso pode levar a surpresas curiosas.

Para começar, algumas pessoas reclamaram que o jogo não estava à venda em uma versão em caixa. Como coleciono jogos retrô simplesmente em cartuchos (para economizar dinheiro e espaço nas prateleiras) , a princípio não pensei em criar uma versão em caixa. Mas agora percebo que seria bom oferecer essa opção às pessoas que dela precisavam. Mas um dos fãs do jogo, Cyph, foi ainda mais longe e criou sua própria caixa de jogo, remodelando a caixa de jóias do cartucho do Nintendo DS. Não sei você, mas o resultado me parece incrível. Se você estiver interessado nisso, também poderá criar sua própria caixa. Tudo o que você precisa é pegar a caixa de jóias do cartucho do Nintendo DS, cortar duas pequenas peças de plástico dentro e inserir esta linda capa criada pela Cyph .


Linda caixa caseira para Sheep It Up! criado por Cyph da caixa de cartuchos Nintendo DS!

Outro detalhe divertido sobre o jogo é que ele foi demonstrado em uma das maiores exposições de videogame do mundo : a Paris Game Week (300 mil visitantes - mais do que na E3 e na Tokyo Game Show) . Como um jogo amador lançado para Game Boy chegou ao mesmo show com os jogos AAA mais recentes do setor? Por esta oportunidade, agradeço ao OrdiRetro . Esta é uma associação francesa dedicada à história dos videogames, em particular os novos jogos lançados para consoles e computadores antigos. Nesta exposição, eles tiveram um estande com vários jogos. Graças ao meu amigo Julian Alvarez, eles descobriram o jogo e se ofereceram para me mostrar na exposição.


Sheep It Up !, lançado no Super Game Boy durante a Paris Game Week 2017 - obrigado, OrdiRetro !

Mas essa oportunidade pode surgir sem a presença de laços. Imediatamente após o lançamento, o jogo foi comprado por dois fãs da Game Boy da Alemanha envolvidos no site da DMGpage . Mas eles não apenas compraram o jogo, mas também o mostraram na conferência de retrogames da Retro-Börse em Hesse. Então, graças a dois fãs do Game Boy, os jogadores conseguiram jogar meu jogo no Super Game Boy e na conferência alemã - também sou muito grata a eles!


Sheep It Up! apresentado no Super Game Boy durante a Retro-Börse em Hesse - obrigado, DMGpage !

Conclusão


Os jogos homebrew para consoles retrô não são feitos por dinheiro ou popularidade.Geralmente, são feitas poucas cópias. Você pode esperar uma audiência de várias dezenas de pessoas, no máximo, algumas centenas, se o seu jogo for realmente bom. Mas você pode ter certeza de que essas pessoas têm um interesse sincero no seu jogo. Eles são movidos pelo mesmo amor pelo ferro retrô que você. Às vezes, o amor deles pode ser ainda mais forte que o seu. E se você gostou dessas duas partes do artigo sobre a criação de um jogo para o Game Boy hoje em dia, por que não tenta fazer isso sozinho?

Conforme declarado na primeira parte do artigo, Existem muitas ferramentas fáceis de usar para criar jogos para o console portátil mais popular da história. Sim, isso não ajudará você a ficar rico, mas, como resultado, você terá muito prazer. Ou talvez você também possa agradar outras pessoas jogando seu jogo!


Então, espero que você tenha gostado deste post mortem e que o incentive a desenvolver um jogo retro. Além disso, se você tem um Game Boy por aí, não se esqueça de que pode comprar um maravilhoso cartucho Sheep It Up por apenas US $ 15 nos jogos de Catskull. Cada cartucho é montado à mão!

Source: https://habr.com/ru/post/pt418193/


All Articles