Os jogos da Data East/G-mode são emuladores com seus respectivos ROM sets, instalados no Zeebo. Para cada jogo, o emulador é compilado com o código do romset que ele deve rodar, tornando-o específico e não utilizável para outras ROMs. No entanto, através de modificações no binário do emulador, mostraram que é possível forçar a emulação de outros pacotes de ROMs, permitindo a análise de quais jogos é suportado atualmente e que provavelmente virão oficialmente para o console. Porém isto não é certeza: ainda que seja possível tecnicamente, são necessários contratos e licenciamento entre a Zeebo Inc. e as detentoras dos direitos sobre os jogos.
O emulador é capaz de emular ROMs de vários arcades. Em sua última versão, também Mega Drive (SEGA).
As ROMs são armazenadas em um arquivo de extensão PAK (na versão 1.04, ZIP e 7z também), cujo formato ainda é desconhecido. Sabe-se que aloja vários arquivos e oferece compressão compatível com gzip/zlib. Os emuladores conseguem carregar os arquivos separados caso não exista o PAK correto, contando que eles estejam em uma pasta cujo nome é o código do romset e esteja junto do .mod.
Existem fortes indícios - através de referências no executável e informações da companhia que acreditamos ser responsável pelo emu e packs emu+ROM (Onan Games) -, que o emulador suporta conexões pela Internet, possibilitando partidas online. Uma vez que as ROMs originais não suportam este tipo de recurso, o emulador traduz as informações vindas do outro cliente em comandos de joystick, simulando um segundo jogador no mesmo console.
Existem várias versões, dependendo para qual romset foi compilado.
<!—Write alphabetically—> {|class = “wikitable sortable” style=“width: 100%;”
! style=“width:20%; text-align:left;”| Sistema ! style=“width:35%; text-align:left;”| Título ! style=“width:12%; text-align:left;”| Arquivo ROM ! style=“width:12%; text-align:left;”| Driver MAME ! style=“width:3%; text-align:left;”| 0.93 ! style=“width:3%; text-align:left;”| 0.94 ! style=“width:3%; text-align:left;”| 0.95 ! style=“width:3%; text-align:left;”| 0.96 ! style=“width:3%; text-align:left;”| 0.97 ! style=“width:3%; text-align:left;”| 1.00 ! style=“width:3%; text-align:left;”| 1.04
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#8470FF |
bgcolor=#8470FF |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#00FF7F |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#00FF7F |
bgcolor=#FFFF00 |
bgcolor=#00FF7F |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#00FF7F |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#00FF7F |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#00FF7F |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#00FF7F |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#8470FF |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#8470FF |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#8470FF |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#8470FF |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#8470FF |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FF0000 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FF0000 |
bgcolor=#FF0000 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#00FF7F |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#00FF7F |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#00FF7F |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#00FF7F |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FFFF00 |
bgcolor=#FF0000 |
bgcolor=#FFFF00 |
Legenda: {|class = “wikitable sortable”
!| Cor !| Descrição
bgcolor=#FFFF00 |
bgcolor=#8470FF |
bgcolor=#00FF7F |
bgcolor=#FF0000 |
bgcolor=#FFFFFF |
O propósito desta pesquisa é provar que o Zeebo está apto a executar vários outros jogos, sendo necessário poucos ajustes de caráter técnico.
Quaisquer modificações no emulador implica na invalidação da licença no console, fazendo necessário o uso de JTAG para permitir a execução do executável modificado.
Abra o executável do emulador (de preferência um mais recente) em um editor hexadecimal e busque pela primeira ocorrência do código da romset para qual o emulador escolhido foi compilado. E.g.: darkseal.mod, procure por “darkseal”.
A primeira ocorrência define qual pacote carregar. Altere para o novo código, respeitando os limites de texto, sobrescrevendo (não insira bytes) o original. Caso o código seja menor, sobrescreva o restante com o byte 00 (terminador de string).
Coloque os arquivos do jogo em uma pasta cujo nome seja seu código ou “master name”.