Casa > Q > Que Passos Deves Seguir Para Criar Um Emulador Stm32F4 Para Jogos 2D, Como Game Boy E Snes Nintendo?

Que passos deves seguir para criar um emulador STM32F4 para jogos 2D, como Game Boy e SNES Nintendo?

Devidamente começaria por portar um emulador existente.

Existe quase de certeza um emulador de código aberto escrito em C ou C++ para qualquer consola que queiras emular. A compilação do núcleo do emulador até o STM32 deve ser trivial, pois é apenas lógica - sem entrada/saída. O núcleo do emulador consiste em componentes discretos, como a CPU, controlador de memória, etc. Portar a emulação do controlador, display e som do console serão os aspectos mais envolvidos do empreendimento.

Display

A display é a parte mais importante do emulador. Ele permite que você veja os gloriosos gráficos gerados como resultado do trabalho árduo da CPU. Para exibir esses gráficos, é claro que você precisará de um display. Algumas variantes do STM32 têm um controlador de visualização integrado, outras não. I'estou assumindo que você está tendo como alvo um sem a controladora de tela embutida, por uma questão de simplicidade. Você precisará obter um display externo que possa fazer interface com o micro controlador sobre o SPI. Os monitores com interface sobre I2C são muito lentos, e monitores com interfaces mais complicadas como MIPI estão fora do escopo de um simples projeto STM32. Qualquer tela que você obtém conterá um buffer de quadros no qual você pode acessar DMA (acesso direto à memória) com informações brutas de pixels para exibição. Para emuladores de console retro que não são renderizados em 3D, o emulador provavelmente terá um buffer de quadros dentro dele, que ele usa para copiar as informações da tela para a placa gráfica do PC para exibição. Também é possível que o emulador esteja usando OpenGL ou SDL para exibir os gráficos, nesse caso você precisa escrever um wrapper para capturar as gravações nessas bibliotecas e armazenar a informação bruta do vídeo em um framebuffer próprio. Uma vez que você'tenha feito isso, cada vez que o emulador tiver produzido um novo frame, você pode usar o controlador DMA no STM32 para transferi-lo para o display externo que você conectou.

Controller

Agregar alguns botões até o GPIO do STM32. Encontre a função no emulador que solicita o estado do controlador (muito provavelmente do teclado). Leia os pinos GPIO quando esta função é chamada, e defina os bits apropriados no valor de retorno desta função.

Áudio

Felizmente eu não sei muito sobre como funciona o áudio nos emuladores de console. Meu palpite sobre como você poderia portar a funcionalidade de áudio de um emulador para o STM32 seria encontrar uma biblioteca escrita para o STM32 que possa emitir buffers de som sobre o I2S (como o I2C, mas especificamente para som) para um DAC e amplificador do I2S que possa ser conectado diretamente a um alto-falante. Caberia a você traduzir as chamadas no módulo de som do emulador para esta biblioteca. Os consoles mais antigos tinham apenas alguns canais que podiam produzir ondas quadradas, ondas de dentes de serra, etc. Então se a biblioteca do I2S tem implementação para gerar essas ondas, encaminhar chamadas para fazer as ondas do módulo de som do emulador para a biblioteca não deve ser muito difícil.

Obviamente esta é uma visão geral de alto nível. O diabo está nos detalhes. Há muito a aprender sobre emuladores, protocolos e sistemas embarcados como um todo envolvidos neste projeto.

De Lundell

Porque é que a Nintendo encerra os torneios Melee online? :: Como ouvir rádio FM pela internet