Saudações leitores do Blog Tectoy!

Hoje trazemos uma entrevista com Stéphane Dallongeville, um programador que há alguns anos criou o SGDK (Sega Genesis Development Kit) – um pequeno kit de desenvolvimento de jogos, aberto e gratuito para o Mega Drive, que está em constante atualização.

O SGDK já vem incluído com uma biblioteca de desenvolvimento e funções prontas para auxiliar no trabalho, e para começar a mexer nele é recomendado ter um conhecimento na linguagem de programação C, pois é a base de funcionamento do kit.

Você pode fazer o download do SGDK no site oficial, além de conferir alguns tutoriais de como ele funciona (tudo em inglês).

E abaixo você confere nossa entrevista com o criador do kit. Divirta-se!

Olá Stéphane, apresente-se aos nossos leitores.

Meu nome é Stéphane Dallongeville, tenho 38 anos e atualmente estou trabalhando como engenheiro de pesquisa em um bem conhecido instituto de pesquisa em saúde em Paris, mas o que realmente faço lá é desenvolver software para pesquisadores (não sou biólogo).

Eu comecei a jogar videogame quando eu era bem jovem, com cerca de 6 anos, estranhamente, comecei nos fliperamas, pois havia uma casa de fliperamas muito perto da minha escola primária. Então eu rapidamente me mudei para o NES, Master System, Mega Drive, SNES… A era de 16 bits foi minha preferida e comecei a mudar para o PC quando a era de 32 bits começou, enquanto me interessava cada vez mais pela programação.

Eu tenho um irmão gêmeo e enquanto ele era (e ainda é) mais um cara da Nintendo, eu sempre fui mais um fã da Sega, acho que a clássica competição entre gêmeos nos levou a isso 😉 Bem, de qualquer forma eu tenho que admitir que eu gastei muito tempo no meu SNES como no meu Mega Drive, mas o Mega continua sendo o sistema que mora no meu coração.

Mais tarde, quando eu estava no ensino médio (em 1999 eu acho), descobri a emulação com o Nesticle (um emulador de NES) e fiquei maravilhado com esse software que faz seu computador capaz de jogar jogos do NES! Foi meio mágico para mim e fiquei muito intrigado com isso. Depois de algumas pesquisas, decidi começar a escrever meu próprio emulador: Gens. Claro, eu decidi escrever um emulador para o meu sistema favorito, o Mega Drive 🙂

Eu realmente comecei com o Gens pela diversão e só para entender como desenvolver um emulador, eu estava convencido de que o projeto não iria para frente e que logo me aborreceria com isso, mas depois de algum tempo o Gens começou a se tornar um bom emulador para o Windows (na época) e recebi muitos e-mails de apoio que me empurraram a continuar por algum tempo. Então eu adicionei a emulação de Sega-CD, fiquei realmente surpreso com o número de pessoas à espera da emulação dos jogos em CD (o Gens foi o primeiro emulador de Sega-CD que funcionava), depois adicionei suporte ao 32X. Então eu lentamente descontinuei o projeto em 2002, já que não estava mais motivado a continuar com isso (eu até comecei a reescrever o emulador completamente, mas nunca o liberei).

Depois de um tempo, comecei a me interessar em tentar programar para o Sega Mega Drive, quando vi que existia um compilador C para ele (muito mais rápido para desenvolver em C do que em Assembly), acho que foi em 2003. A coisa que eu gosto do Mega Drive é que o sistema é bastante fácil de desenvolver, além disso a CPU 68000 permite usar um compilador C e ainda obter resultados decentes, mas o problema é que as ferramentas disponíveis no tempo eram realmente uma porcaria e bugadas. Eu lembro que estava usando um compilador SGCC e uma divisão simples poderia gerar código errado. Então, eu comecei a construir minha própria linha de ferramentas GCC completo para o Mega Drive, e lentamente comecei a criar minha própria biblioteca em C e Assembly para me ajudar com o desenvolvimento do Mega Drive, e foi assim que nasceu o SGDK 🙂

Fale sobre o SGDK. Quantos jogos você chegou a fazer nele?

Na verdade, passei muito mais tempo no desenvolvimento do SGDK do que desenvolvendo algo para o Mega Drive. Para ser honesto, acho que só desenvolvi um único jogo (e não era para mim), era um jogo bastante minimalista ^^

Eu também desenvolvi algumas demonstrações, como Bad Apple Mega Drive [nota: famoso vídeo musical composto por silhuetas] ou uma demo conceitual de Star Fox por exemplo, mas nenhum jogo real.

Quantos estúdios/pessoas usam o SGDK hoje para desenvolver novos títulos?

Muito difícil de responder essa pergunta. Na verdade, eu conheço muitos russos, alguns chineses e japoneses que usam o SGDK para produzir jogos sem licença (coisas como Plants vs Zombies, Angry Birds…), mas não os vemos por aqui e eles não se comunicam comigo, então eu não sei quantos eles são. Eu acho que a cena de desenvolvimento do Mega Drive é muito pequena, mas tem aumentado muito nesses últimos anos, o SGDK provavelmente ajudará um pouco aqui.

Eu nem posso dar uma estimativa sobre o número de usuários do SGDK, mas acho que provavelmente não há mais de 100 ou 150 pessoas realmente desenvolvendo com ele.

Qualquer um pode usar o SGDK ou é necessário ter algum conhecimento de programação?

Você precisa, pelo menos, de conhecimento em linguagem C, pois este é o idioma principal do SGDK, você também pode usar Assembly para 68000 se quiser, mas acho que é mais fácil ficar com C. Além disso, recomenda-se conhecer um pouco a arquitetura do sistema 2D antigo em geral e, é claro, preferencialmente conhecer a arquitetura do Mega Drive. Isso não é uma obrigação, pois o SGDK tenta facilitar muito o trabalho para o desenvolvedor, mas é realmente uma vantagem para usar o SGDK de forma otimizada 🙂

Como é o processo de desenvolvimento? A comunidade testa e envia relatório de bugs por email?

O SGDK é de código aberto e hospedado no github. Qualquer pessoa pode reportar bugs ou até mesmo enviar patchs no pull request (o qual eu reviso antes de mesclar no ramo principal). Em geral, eu mesmo faço muitos testes em hardware real, o SGDK é bastante estável hoje.

Quantos modelos de Mega Drive você tem em sua coleção ou quantos você conhece que têm suporte e funcionam bem nos jogos do SGDK?

Eu possuo esses modelos:

– MD1 PAL
– MD1 JAP
– MD2 PAL
– MD2 US (não mais)
– Nomad
– CDX
– WonderMega

O SGDK está trabalhando em todos eles (pelo menos, todo o trabalho de amostra incluído funciona como esperado). Eu sei que o último Mega Drive da Tectoy tem alguns problemas com ele, mas o motivo foi encontrado e pode ser facilmente corrigido (na verdade, ele já está corrigido no github) 🙂

Qual é o jogo mais elaborado que você já viu usando o SGDK? Quais são as limitações do SGDK?

Não conheço todos os jogos que tenham sido feito com o SGDK, mas este no vídeo abaixo foi construído usando uma versão antiga do SGDK e foi codificado 100% em linguagem C.

Isso mostra que mesmo usando o código 100% C você já pode fazer algumas coisas excelentes, e isso é com uma versão antiga do SGDK. Novos SGDK usam uma versão mais recente do GCC que produz um código muito melhor, também o SGDK é melhorado continuamente 🙂

Sobre as limitações do SGDK, eu diria que não há nenhuma limitação real, pois você sempre pode misturar o código C e ASM se você precisar dele 🙂

A demo Bad Apple e o Starfox POC (Prova de Conceito) foram ambos feitos com SGDK (e ambos possuem código Assembly).

Mas se você quiser ficar com C, é claro que você não poderá explorar a CPU com o seu potencial total, pois o código gerado nunca é perfeito, ainda acredito que você já pode fazer jogos impressionantes e excelentes com isso.

Eu não sei o quanto isso é uma prova, mas um grupo chamado Resistance está desenvolvendo algumas demos para o Mega Drive usando o SGDK. Você pode ver sua última demonstração aqui:

Em nossa entrevista com o Vetea, ele comentou que você ajudou no Papi Commando. Você se lembra qual foi sua colaboração?

A maior parte foi com suporte ao SGDK: explicando como fazer algo ou como as coisas funcionam em geral. Eu também adicionei um recurso no SGDK que faltava na engine de sprite. Eu também ajudei com o carregamento do plano dinâmico para fazê-lo percorrer o tamanho máximo do plano de hardware.

O que podemos esperar do SGDK para o futuro?

Uma das minhas principais preocupações atualmente é a compilação de recursos de sprite: a parte de corte de sprite que não está otimizada, pode desperdiçar muita largura de banda VRAM/DMA por causa disso. É sempre possível fazê-lo manualmente, mas é realmente complicado quando temos muitos sprite-sheets, de modo que é algo que eu quero melhorar. Eu também quero implementar uma maneira genérica de lidar com grande rolagem em um mapa grande.

No futuro, também planejo trabalhar em uma nova versão do driver XGM (driver de som principal do SGDK), o atual possui algumas limitações (sem suporte de volume, por exemplo). Claro que esses são os planos atuais, mas tudo pode mudar rapidamente.

Você tem algum outro projeto em mente?

Eu realmente gostaria de desenvolver um jogo real para o Mega Drive =)

Eu tenho várias “ideias” sobre isso, mas meu primeiro trabalho é completar o Star Fox POC e fazer um jogo real a partir dele.

Mas como eu tenho muito pouco tempo livre para dedicar a isso, não quero dizer muito agora, pois há muitas chances que nada aconteça 😉

Você sabe alguma coisa sobre o Brasil ou sobre o nosso mercado de jogos?

Não sei muito sobre o Brasil para ser sincero, nunca visitei seu grande país. Tenho um par de amigos que vivem aí há 2 anos e parece ser um bom lugar para se viver (clima bom e e lugares selvagens).

Eu sei que a Tectoy foi a distribuidora oficial da Sega no Brasil e que continua a apoiar os seus sistemas antigos bem depois da sua vida oficial 😉 Eu sempre apreciei a Tectoy por essa única razão, em manter os sistemas clássicos vivos.

A Tectoy lançou alguns títulos exclusivos no Mega Drive como Duke Nukem 3D (e isso em 1996, novamente bem depois da idade dourada do videogame).

Gostaria de dizer algumas palavras finais?

Eu acho que os sistemas clássicos e retrogaming em geral ganham mais e mais interesses ultimamente, mesmo que permaneça um mercado (muito) menor do que o jogo moderno. Eu acredito que em um futuro próximo veremos mais e mais novos jogos no sistema retro, não apenas homebrews, mas também jogos desenvolvidos pelas empresas à medida que o mercado aumenta. O Mega Drive é um bom candidato para este mercado (fácil de desenvolver, recursos suficientes para fazer ótimos jogos) e a Tectoy provavelmente tem uma ótima oportunidade aqui (não só no Brasil, mas também na Europa e nos EUA). Obrigado pela entrevista.

  • Lene Chaves

    Nossa! É o desenvolvedor do Gens! Eu usava muito esse emulador.
    Tec Toy, vocês poderiam investir no desenvolvimento de games ineditos para mega drive, feitos aqui no Brasil. Com o SGDK e um bom time de desenvolvedores, acho que daria certo. Quem comprou o novo mega drive talvez se interesse por comprar jogos novos.

    • Obr Cristiano Camacho

      Eh complicado man,O custo eh bem mais alto q jogos normais,eu msm to me matando pra poder entregar o meu rpg 😉

      • Alexsandro Vinicius Mendes

        eu compro, hehehe

      • Lene Chaves

        Seria realmente um empreendimento ousado e nem um pouco fácil. Nem barato.
        Mas eu dei essa sugestão lembrando que a Tec Toy já desenvolveu um game por completo, e sem o SGDK. Foi o game Férias Frustradas do Pica Pau, que, diferente do game da Monica, nao é uma simples mod. Se eles fizeram “o impossivel” uma vez, será que nao poderiam repetir a façanha? Heheh

  • Beto souza

    Nossa tomara que ele consiga mesmo terminar o starfox ,seria loko demais.

  • hbeira

    Pra quem tiver interesse, fizemos o jogo “Prisioneiro da Liberdade”, para o Mega Drive, usando a GINCS Visual Studio! 🙂

    Link: https://www.youtube.com/watch?v=9r8qiHVax6A

    • Obr Cristiano Camacho

      Jogo muito bom^^

  • Anderson Dos Santos

    Muito bom. E é impressionante o poder do Mega que os desenvolvedores atuais em descobrindo :3

  • Obr Cristiano Camacho

    Sou programador ,e estou fazendo um rpg pro megadrive usando o sgdk, e como tenho a agradecer a esse cara! Grande stef, fez oq ninguem fez! Um kit pro mega, e ele sempre dá uma força pra nós q usamos seu kit 🙂

  • Renato Batista

    Só queria que a tectoy fizesse um port do double dragon do zeebo para mega drive

  • Mauro R. Flores

    Mas faltava um código para limpar a vram na passagem de telas nos jogos, o Neto escreveu tal em assembly em 10 minutos! Imagine esses dois caras trabalhando juntos!

  • Namida

    Also make with SGDK ! “Alien Hates Japan” in development 😉 https://youtu.be/W2KWmfnUEOc

  • Caramba, o cara é o autor do GenS (por anos, o melhor emulador de Mega). No mais, só notei erros de tradução em “você também pode usar a montagem 68000 se quiser” (deveria ser “você também pode usar Assembly para 68000 se quiser”) e em “até mesmo enviar patchs no formulário de solicitação” (acredito que, quando traduziram “formulário de solicitação”, estavam traduzindo *pull request*, que no github é mais um pedido para aceitarem suas contribuições, e geralmente o termo não é traduzido).

    • Marcito

      Oi Rael, obrigado pelas observações, realmente passaram batido! Abraços