20 outubro 2017

Hackeando o Mega Drive 4 (parte 1)

---8<---corte aqui---8="" br="" nbsp="">
***UPDATE madrugada de 24/out***: O Neto fez um programa que extrai o conteudo das DUAS placas. Ta la no final, por favor baixem e vejam que bacana o conteudo da placa 1. (e nao esqueçam de clicar no anunciante e compartilhar o post hehe)
---8<---corte aqui---8="" nbsp="" p="">
Ola pessoal!

Mais um artigo da serie "Hackeando o...". E pra variar, mais um artigo multi-partes.

Antes de tudo, o motivo dessa serie "multi-partes" é que o trabalho é longo e extenso. Nem sempre da pra enfiar tudo que precisariamos saber em um artigo so - e nem sempre eu consigo terminar a tempo tudo que precisa ser (re)visto para escrever o artigo. E muitas vezes o hacking sequer está completo, eu escrevo o artigo ate mesmo para cooptar pessoas a ajudar, como por exemplo o Lisias Toledo e o Neto, conhecidos hackers da cena do Mega Drive.

Eu gostaria de, em principio, me desculpar. O artigo é um tanto superficial. Porem apesar da superficialidade, eu estou oferecendo um "ponto de partida" para hackear esse aparelho. Ate onde sei, ninguem ate hoje extraiu essas ROMs, muito menos as decodificou. E eu acho importante espalhar pela comunidade esse tipo de informacao. É o ponto de partida para voos mais altos. Se o MD4 tem o mesmo processador do Atari, Colecovision e Intellivison Flashback, significa que pode haver portabilidade de EMULADORES (e por consequencia, jogos) entre eles. Fora o desenvolvimento de novas aplicacoes/emuladores para essas plataformas. Depois da "benção" da Tec Toy ao trabalho do Neto, acredito que abriu-se uma porta muito importante na comunidade. E é importante manter essa porta aberta. 



E antes de começar o artigo: Nao se esqueçam de POR FAVOR compartilhar esse post em todas as midias sociais que voces tem acesso, e de clicar nos nossos anunciantes e conhecer seus produtos. É uma mixariazinha que gera para o Tabajara, mas é um grande incentivo a continuar escrevendo, tudo bem? E lembrando, aceitamos doacoes! Se alguem tiver um mega drive 4 em perfeito estado (mesmo sem os controles/guitarra ou so a placa) ajuda bastante nosso trabalho. Doações em dinheiro tambem sao bem vindas!

Ok, ao post entao :)

Um dia estava eu na Sta Ifigenia, e vi algumas placas de sucata da Tec Toy pra venda. Tinha mega drive, master system, mega drive portatil, placas de controle de dreamcast...tudo mixaria no Shopping da Beth. Aproveitei pra pegar umas plaquinhas e trouxe pra casa. E ficaram guardadas um tempao...



Um dia, o rapaz do post anterior me mandou o Atari Flashback pra extrair a ROM, e eu descobri que o processador usado no FB7 é o mesmo processador usado em varios videogames. Incluindo algumas versoes do Mega Drive. E lembrei que eu tinha essa placa guardada aqui em casa.


Essa placa ai é o "coração" do Mega Drive 4. Uma versao do MD com dezenas de jogos na memoria, e inclusive uma versao do "Guitar Hero" do PS2, adaptada pro MD. Coisas da Tec Toy :o) Acho que so no Brasil a velharia do Master System (SMS) e o Mega Drive ainda sao PRODUZIDOS e VENDIDOS. Hue Hue, BR BR. Neste caso, uma curiosidade: Essa placa tem um processador "TITAN" e, vejam so, uma trolha de RAM e ROM.

Hum?!

Poise. Essa placa...pasmem...tem 132MB de FLASH ROM. Nao, voces nao leram errado. CENTO E TRINTA E DOIS MEGABYTES DE FLASH ROM.

Explico:

Essa placa nada mais é que uma "especie" de raspberry pi dedicado. O processador TITAN é na realidade um ARM (o qual se desconfia ser da serie LPC da Philips, com algumas modificacoes) rodando um EMULADOR de Mega Drive (e Master System!). Parece incrivel, mas é. E digo mais: É o mesmo processador usado nos Atari Flashback (a partir do 3), Colecovision Flashback e Intellivision Flashback. E teoricamente, com o codigo sendo compativel entre todos eles.

Bugou? Entao se segura. Tem muito mais pra gente ver nesse post monstruoso, de poucas imagens mas muita informacao!

Primeiro, vamos a um infografico rapidinho

  • Rosa: Memoria 25L4005A - 512K serial, guarda o codigo de boot e interpretador de comando (!) 
  • Vermelho - Conexao da porta serial do processador, 115200BPS
  • Marrom - Saida de video composto, audio, entrada de alimentação
  • Amarelo - Processador Titan 1.0C
  • Verde - Memorias RAM
  • Azul - Memoria Flash
Memoria de boot: 

A memoria de boot (em rosa no infografico) inicializa o sistema e procura por um arquivo de inicializacao no cartao SD ou na memoria FLASH da placa. Encontrando esse arquivo, carrega e transfere o comando ao mesmo.Infelizmente, so veio esta memoria em uma das duas placas desse tipo que consegui. E eu queimei a memoria ligando-a invertida nas inumeras trocas de memoria entre as duas placas. Estou aguardando chegar memorias novas pra continuar os testes. Mas para quem quiser tentar emular este processador, o conteudo da memoria de boot está aqui: >>>Memoria de boot<<<

Conexao da porta serial: 

A imagem diz tudo. TX, RX, GND. Lembre-se que é um sistema trabalhando a 3.3 volts, entao voce vai precisar de um conversor de serial USB compativel. Eu usei um cabo de celular, mas provavelmente voce vai querer comprar um desses aqui:
A configuração do terminal é 115200N81. Se nao funcionar, inverta os pinos de TX e RX. Voce vai ter acesso a um interpretador de comandos (!!!!!!!) onde voce pode fazer varias coisas, como executar arquivos, ler o SD, formatar o SD, enviar e receber arquvios para/do PC (!!!), entre outros. Digite HELP para uma lista de comandos.


Quem diria que tem isso dentro do Mega Drive 4, né? :o)

Saida de video composto, entrada de alimentação: 


Pinagem facil. Sao 6 pinos da esquerda pra direita.
  1. Video
  2. GND
  3. Audio
  4. GND
  5. +9V
  6. +9V
Ou seja, voce liga uma fonte de 9V entre os pinos 6 e 4, liga um cabo de video/audio nos pinos 1, 2 e 3 e pronto, ja pode fuçar na sua placa :o)

Processador Titan 1.0C:


Esse a gente ja tinha falado antes no post do Atari Flashback, mas agora vamos ir um pouco mais a fundo...Este processador PARECE ser uma edicao customizada de um processador ARM da serie LPC da Philips. PARECE porque tem todo um misterio ao redor da sua fabricação. O processador foi customizado para a ATGames, e nao há NENHUMA informacao razoavel disponivel pela web. Esse vai dar trabalho pra gente descobrir como funciona. To com a ideia de decapar o processador e fotografar o die de silicio em um microscopio, pra tentar achar alguma coisa sobre o distinto.

Como há uma miriade de emuladores de processadores ARM disponiveis, uma pessoa com mais conhecimento de emulação (Oi Felipe Sanches, to olhando pra voce :oD) poderia ajudar a TENTAR encontrar um caminho. Quem sabe? Entao vamos ficar com um ponto de interrogacao daqueles bem grandao por enquanto :o(

Memorias RAM:

Temos duas memorias D33S64016 de 16 megabits (=2 megabytes, perfazendo 4 megabytes de RAM). Nao tem muita coisa interessante pra discutir aqui. Duas memorias RAM smd. Cabô. :o\

Memoria FLASH:


Aqui que a porca torce o rabo :oD

Essa é uma memorya FLASH-ROM HY27UF081G2A de...132 megabytes. Pra que tudo isso? Poise. Tem coisa adoidado dentro desse chip. Tem musicas em MP3 pra parte do "Guitar Hero", imagens, ROMS de jogos, os programas que sao rodados pelo Titan...é tanta coisa interessante que ainda nao deu pra ver tudo.

Em um Brainstorm, eu, Neto e Lisias conseguimos chegar a algumas conclusoes sobre o formato dos arquivos das ROMs. Porem foi o Neto que acertou o prego, e criou um excelente utilitario para extrair o conteudo da ROM da placa 2. E ainda esta trabalhando na rom da placa 1.

O trabalho foi por essa Flash ter na realidade 128MB, sendo os outros 8MB de informacao de (acreditamos ser) ECC. De acordo com as palavras do Neto:
Montei um algoritmo para calcular os bancos e posição dos arquivos.

Ele segue o padrão ao longo do arquivo.
0x700 bytes válidos e 0x140 de filler aleatório.
Considerando os bancos, você começa a leitura a partir do Offset 0x12 e lê blocos de 0x20 bytes em formato texto até encontrar o primeiro Nullo, indicando o fim da tabela de arquivos.
A partir dai você usa aquela informação do tamanho de arquivos e vai somando os tamanhos.
Onde termina um começa o outro, sempre considerando os bancos. Os bancos são de 0x840 Bytes, sendo que cada banco tem 0x700 bytes válidos e 0x140 são dados que não fazem parte da estrutura.
 E o Lisias complementando:

os 0x140 não são aleatórios! São ECC! Dei uma olhada na espeficicação do NAND Flash FS. os dados + ECC têm 2112 bytes porque esse é o tamanho da macrocélua deste chip.
Ou seja, conseguimos decodificar pelo menos a ROM da placa 2. O trabalho na placa 1 continua, e voce pode colaborar tambem! Para quem quiser futucar nos arquivos...


#MAME_no_MD4_e_Atari_Flashback!!! :oD

31 comentários:

Danjovic disse...

Fantástico!! Parabéns pelo trabalho! Será que estes processadores rodam um sistema operacional ou somente o emulador "bare metal"?

Gtronix disse...

Se já tem uma versão coleco, para rodar MSX é um pulo.

Gtronix disse...

Se já tem uma versão coleco, para rodar MSX é um pulo.

SLotman disse...

Taba,

Sensacional o dump, vai me poupar de comprar um desses para pegar screenshots pro meu catálogo de jogos nacionais :)

Agora, acho que tem algum problema no "extrator" - ou sei lá aonde... pelo menos 3 jogos com extensão ".bms" (que são na verdade .sms, de master system) estão com gráficos corrompidos: "os 12 trabalhos de jongo", "Senha" e "Memória Master" - testei tanto no Kega Fusion, quanto no Meka, e o resultado foi o mesmo.

Desconfio do "extrator" (ou talvez de algum bug na ROM?) pois tem muito, muito FFh no início do arquivo...

RobsonFrança disse...

Fala Taba, beleza?

Cara, esse arquivo da ROM da placa 1 tem muita coisa estranha. Vc, o Neto ou o Lísias chegaram a ver o arquivo binário bruto?

Eu localizei:
- Cabeçalho de um disquete formatado no MS DOS 5.0!
- um nome de arquivo .bmp (telaprin_b.bmp)
- depois um monte de nomes de arquivos com extensões variadas (bmp, bin, txt)
- daí mais nomes de arquivos com extensões variadas, mas com uma estrutura de pastas do tipo root\GI2010 (Guitar Idol?)
- ParseBMPImage (será que é de alguma biblioteca ou foi um código criado pela Tec Toy in house?)
- InitTitan(): Called from %s_RISC CPU.
- referências para um tal de nand.lib
- FVLAME3.82 (será que é a versão da biblioteca decodificadora de MP3s LAME?)
- o que parece ser um cabeçalho de arquivos PNG
- arquivos dos jogos exclusivos: FIFA, Need for Speed

Cara, tem bastante coisa interessante.

Abraços

Robson França

Alexandre Souza - PU2SEX disse...

Oi Robson...Sim, foi um trabalho feito a 6 maos. E o software quem fez foi o Neto. Inclusive ja tem a versao nova que decodifica o arquivo da placa 1, vou coloca-la agora no FTP e atualizar o post.

- A memoria é um filesystem, que pode ter sido gerado em um pc
- Tem um monte de arquivo BMP, TXT, etc
- Guitar Idol é o nome do jogo (!) do tal MD4
- O processador TITAN é um ARM (RISC), por isso o InitTitan
- Tem o LAME incluido nele tambem, entre outras coisas (unGZIP, e por ai vai)
- Tem PNG tambem
- Esses arquivos dos jogos exclusivos, é provavel que seja a musica ;o)

SLotman disse...

Opa,

A ROM não tá ferrada não. Peguei aqui "Os 12 Trabalhos de Jongo" e alterei 1 BYTE no arquivo. Ele estava habilitando um modo de tela "extendido" que o VDP do Master não suporta (ou os emuladores não suportam, sei lá) e por isso aparece lixo na tela.

Subi a ROM alterada lá no smspower.
http://www.smspower.org/forums/16828-TecToyMegadrive4DumpsIncludingMasterSystemGames#100126

SLotman disse...

Acertei também o "Memória Master" que mostrava a tela corrompida, se carregado em emuladore de Master System - mesmo link no comentário anterior :)

E por acaso vc não tem aí um "Master System evolution 3" para dumpar as ROMS não, né??? ^_^

Baal disse...

Amigos eu tenho um master system 3 Collection versão de 112 jogos, a ultima que tinha ainda entrada de cartucho. Estava olhando a placa dela aqui tb tem uns pinos com o nome de CN6,(canal?) marcados tb em uma caixinha. Acredito que tb possa ser uma porta serial. Porem meus conhecimentos com eletronica são mt limitados, e nao tenho um conversor de serial usb no momento.. vou dar uma olhada para encomendar um. Caso alguém queira me ajudar a fazer o dump, só me falar. Tb tenho bastante interesse em aprender mais.

BluEngineerCKG43 disse...
Este comentário foi removido pelo autor.
Dee Feernando disse...

O link de download está OFF?

Megaman X disse...
Este comentário foi removido pelo autor.
Megaman X disse...

AWESOME!!!!
parabéns pelo trabalho!!!
Finalmente alguém se interessou em 'Ripar' as Roms do Mega drive!
Sempre quis ter a rom do Fica 1 e do Junte 4 ^^
queria a rom do pense bem tbm..
porém a versão do Super Mega Drive 3 é bem melhor do que essa do MD4.

vcs são demais!!!!

ANDRE AMARAL disse...

COMO FAÇO PARA JOGAR GUITAR IDOL TENTEI NO EMULADOR CLASSICBOY DE ANDROID(QUE RODA OUTROS JOGOS DA PLACA 2) E NÃO CONSEGUI, EXTRAI E SÓ TEM UMA FOTO. PARABENS PELO TRABALHO ALGO MARAVILHOSO.

AntonioTUIN disse...

Fala galera, eu não sou técnico em eletrônica, nem programador, só gosto de fuçar. Eu baixei o conteúdo das duas placas e usei o programa criado pelo Neto pra extrair. Percebi que os jogos da EArts (Guitar Idol, Fifa 08, Need for Speed Pro Street, The Sims e Sim City) não são ROMs como os outros jogos. O que eu quero saber é se é possível usar o conteúdo dessas placas pra gerar ROMs dos jogos da EArts q rodem no KEGA? Em especial o Guitar Idol, que provavelmente precisaria ser programado como SEGA CD, por causa das músicas.

Dropbruh disse...

Os jogos da EA são jogos de celular Java emulados e o Guitar Idol também não é um jogo de Mega Drive(desconheço a linguagem usada). Pra emular os jogos de EA seria preciso um emulador de jogos Java de celular(levando em conta o fato de serem jogos de celular Java) e em relação ao Guitar Idol eu ainda não achei uma solução.

Dropbruh disse...

O Guitar Idol não é um jogo de Mega Drive, ele foi desenvolvido usando outra linguagem o C++ ou seja uma linguagem que o Mega Drive em si não compreende, seria preciso criar algo pra faze-lo rodar corretamente no Windows.

Dropbruh disse...

Eu também tenho pouco conhecimento em relação a eletrónica mas estou aos poucos aprendendo, eu gostaria de ajudar de alguma forma afinal eu estou louco para conseguir as ROMs desse console. Meu email para contato: jecababu@gmail.com

JONATHAN disse...

Alguem ja testou o neto boot loader mdplay nessa mega ae?

Shadowrod disse...

É possível funcionar o boot loader nesse mega com cartão sd?

Rodrigo disse...

Alguém em 2020 que conseguiu fazer essas Roms rodar ? Em especial o guitar idol em algum emulador no pc?? Ajuda nos NETOOOOO

Fernando Rocha Bastos disse...

Será que tem como fazer com um mega drive tectoy 60 jogos, abrir e fazer o mesmo, pq tem o pense bem(pq dessa versão é melhor) e o pedreiro polar

Adam disse...

Faz do mega driver 71 games queria muito jogar força alienígena :( n tem a rom

Victor Campos disse...

Pergunta: ja encontramso um jeito de arrumar o som desse mega? mais especificamente tirar o emulador arrumar o pitch e gravar denovo no mega? ou um bootloader que faça isso?

anonimo disse...

http://www.mediafire.com/file/jlnghyoygq9j79i/TECTOY.rar/file

Link pra baixar as roms mega drive incluindo o forca alienigena

Fernando Rocha Bastos disse...

Vlw, muito obrigado pelo link de download. Mas o Pense Bem é da versão de master system. Eu tenho o mega drive de 60 jogos, eu tenho vontade de abrir e extrair, mas não sei como faço isso, ele tem a versão do Pense Bem melhor.

Oak_Stone disse...
Este comentário foi removido pelo autor.
Oak_Stone disse...
Este comentário foi removido pelo autor.
SLotman disse...

Para quem estava perguntando, o Guitar Idol e outros jogos são feitos em BREW, uma espécia de linguagem C proprietária da Qualcomm. É a mesma usada nos jogos do Zeebo.

Provavelmente só será possível rodar esses jogos em algum emulador de Brew - mas até onde eu sei, isso não existe.

Luke Silva disse...

alguem consegue me ajudar?
eu n consigo rodar os jogos (roms) no emulador no android
so tem uns arquivos " .bms " e " .gz " e nao sei oq fazer

Unknown disse...

Maybe someone can provide a little guidance.
I've got the SMS and MD games running
(Luke Silva, rename BMS files to SMS and unzip the GZ files with 7zip)

I've found the four Java games (mdfifa, mdnfsps, mdsimc and mdsims) but I can't load them in any Java emulator. Renaming them as JAR files does nothing. Any thoughts on how to run these?

Bill