Mudanças entre as edições de "AnotherWorld JAMMA"

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
Linha 38: Linha 38:
 
'''Função:''' Gerar sinal de vídeo para os pinos do conector JAMMA com base em rotinas de rasterização dos elementos poligonais armazenados em ROMs
 
'''Função:''' Gerar sinal de vídeo para os pinos do conector JAMMA com base em rotinas de rasterização dos elementos poligonais armazenados em ROMs
 
'''implementação:''' (pendente)
 
'''implementação:''' (pendente)
  +
  +
==== rasterização ====
  +
  +
TO-DO:
  +
  +
'''Passo 1:''' Esturar o algoritmo de rasterização com base no código fonte da [https://github.com/felipesanches/Another-World-Bytecode-Interpreter/blob/master/video.cpp reimplementação livre] da VM.
  +
  +
'''Passo 2:''' Implementar uma máquina de estados equivalente
  +
  +
'''Passo 3:''' Estágio de saída (paleta de cores) Implementar bank-switching para alternação de paletas de cores. E projetar conversor digital-analógico para os 3 canais de cores. Precisaremos de ROMs pequenas para armazenar as paletas de cores. Placas de arcade usam ROMs OTP (one-time-programmable) como a [http://www.datasheets360.com/pdf/3753113081012339967 HM-7611] usada no jogo 1984 (ver a página "COLOR MIXER" do esquemático nesse [http://www.jammarcade.net/files/Schematics/Arcade/1943.pdf PDF])
  +
  +
'''Passo 4:''' Realizar em portas lógicas e montar em protoboard ou PCB e testar

Edição das 13h06min de 3 de agosto de 2016

Relógio Central

Função: Gerar o sinal de clock para a CPU e para os circuitos de geração de vídeo
implementação: (pendente)

CPU

Unidade de Controle - Decodificador de Instrução

Função: Detectar qual instrução o processador precisa executar com base no valor do código de instrução atual
implementação: (pendente)

Sugestão:

Como o instruction set da VM é muito simples e tem opcodes com valores incrementais de 0x00 a 0x1A (mais um par de instruções especiais em 0x80 e 0x40) é possível implementar trivialmente um decoder por meio do uso de um decodificador de 5 bits para 32 linhas

Unidade de Controle - Microcódigo

Função: Implementa o comportamento de cada instrução por meio da geração de sinais de controle que manipulam o fluxo de dados
implementação: (pendente)

Fluxo de Dados

Função: Elementos passivos que implementam os registradores internos da CPU, Pilha e memória
implementação: (pendente)

STACK

A VM possui uma pilha de 256 elementos de 16 bits cada. Pensei em implementar isso com register files, mas não achei um grande o suficiente pra isso. O Mais próximo que achei foi esse que tem 64 elementos de 40 bits cada. Mesmo assim teria que ter 4 desses, sobrariam bits não usados e não sei o quão fácil é achar desse chip. Talvez seja o caso de usar uma RAM estática, mesmo que as menores disponíveis já sejam muito maiores que o realmente necessário aqui.

Sistema de áudio

Função: Tocar 4 canais simultaneos de áudio com base em samples armazenados em ROMs
implementação: Estamos estudando a possibilidade de usar um chip MSM6295

Sistema de vídeo

Função: Gerar sinal de vídeo para os pinos do conector JAMMA com base em rotinas de rasterização dos elementos poligonais armazenados em ROMs
implementação: (pendente)

rasterização

TO-DO:

Passo 1: Esturar o algoritmo de rasterização com base no código fonte da reimplementação livre da VM.

Passo 2: Implementar uma máquina de estados equivalente

Passo 3: Estágio de saída (paleta de cores) Implementar bank-switching para alternação de paletas de cores. E projetar conversor digital-analógico para os 3 canais de cores. Precisaremos de ROMs pequenas para armazenar as paletas de cores. Placas de arcade usam ROMs OTP (one-time-programmable) como a HM-7611 usada no jogo 1984 (ver a página "COLOR MIXER" do esquemático nesse PDF)

Passo 4: Realizar em portas lógicas e montar em protoboard ou PCB e testar