PC Engine/TurboEMU

     Acho que aqui no Brasil poucas pessoas já devem ter ouvido falar sobre PC Engine ou como realmente ficou conhecido aqui no ocidente: TurboGrafx-16. Antes de qualquer coisa, esse é um projeto de férias e eu espero que não vá ficar na minha *pilha de projetos*. Eu sempre gostei da área de emulação e acredito que esse realmente tenha sido um *passo inicial* para realmente entender melhor esse mundo, antes do TurboEMU eu já tinha escrevido um interpretador de Chip8 com ajuda de um tutorial e re-escrito um 6502 em C/ARM Assembly com ajuda de um amigo, então decidi, por que não começar algo do 0 ? 😉

PC Engine

PC Engine

     TurboGrafx-16 como ficou bem conhecido por aqui foi/é um console desenvolvido pela Hudson e NEC e foi um dos primeiros a ser 16 bits. Mesmo sendo considerado um console *16 bits* ele utiliza uma CPU 8 Bits(HuC6280, que irei falar sobre ela mais a frente), porém suas duas GPUs é 16 bits(HuC6270 e HuC6260, que são nossos Video Display Controler e Video Color Encoder que é basicamente processador de vídeo e cores), ainda não há muito a falar sobre as GPUs, ainda não cheguei nessa parte, nesse momento que estou escrevendo apenas a CPU e parte da MMU está pronta. Apesar de ser um vídeo game pouco conhecido, há alguns títulos conhecidos, como Castlevania, Bomberman(óbviamente), Street Fighter […].

Especificações:

CPU: HuC6280 @ 7.16 Mhz ou 1.79 Mhz
GPU: HuC6270/VDC (Video Display Controler) e HuC6260/VCE (Video Color Encoder)
Resolução: 256×216
RAM:  8 KB
VRAM: 16 KB
Som: 6 Channel Stereo

Mas, por que escolher o PC Engine ? A principio eu tinha escolhido ele por que acredito que seja mais simples em relação aos consoles 16 bits que temos, além disso a familiaridade que já tenho com o 6502, pois o HuC6280 é baseado no 6502, ele herda todas as instruções do 6502 e é acrescentadas mais instruções e alguns bugs foram corrigidos (como o do JMP Absoluto) além de uns modos de endereçamentos diferentes.

HuC6280 - Fonte: Wikipedia

HuC6280 – Fonte: Wikipedia

O grande obstaculo que eu vejo na criação desse emulador é documentação, as documentações que temos disponível estão no Emu-DocsMagic Kit EmuViews (TurboGrafx-16 Hardware Notes by Charles MacDonald), também temos dois emuladores Open-Source (HuGo e TGEmu) que podem ajudar em duvidas de como implementar certas partes, o Service Manual do console e por fim o livro Develo Book que está em japonês infelizmente. Apesar disso sinto falta de uma wiki (achei uma wiki ! aqui) ou até mesmo um IRC que pelo que eu vi não há nada do tipo, daí que veio a ideia de começar a documentar tudo que eu encontrar pela frente que está fragmentado em algum canto, quem sabe criar uma wiki ou coisa do tipo. Por fim o meu objetivo por enquanto é apenas emular a parte que utiliza os HuCards (basicamente fitas com os jogos), que pode armazenar por volta de 1MB, pretendo deixar o Add-on do CD quando tiver algo realmente funcional.

Afinal, o que está pronto ? Nesse momento já escrevi boa parte do HuC6280 (assim eu espero) e parte da MMU, é possível fazer leitura de alguns backups(ROMs) e ver as instruções sendo executadas (elas vão ser salvas em um arquivo chamado “log.txt” no directório do aplicativo), mas ainda há muito a ser implementado para ter um resultado satisfatório.

De qualquer forma, deixo aqui esse breve resumo do início da minha saga de tentar criar um emulador de PC Engine. Para quem está interessado em acompanhar o projeto, eu estou atualizando ele no GitHub.

[]’s

This entry was posted in Emuladores and tagged , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *