sexta-feira, outubro 20, 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

9 comentários:

Danjovic disse...

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

Gustavo Silva de Souza disse...

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

Gustavo Silva de Souza 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 - PU1BZZ 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é??? ^_^

Aval0s 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.