collapse

* Posts Recentes

Circuito Microfone que funcione por almamater
[Hoje às 17:14]


Emulador NES em ESP32 por dropes
[22 de Abril de 2024, 14:14]


Arame de Estendal por almamater
[18 de Abril de 2024, 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]

Autor Tópico: Emulador NES em ESP32  (Lida 14631 vezes)

0 Membros e 16 Visitantes estão a ver este tópico.

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Emulador NES em ESP32
« em: 31 de Janeiro de 2024, 14:54 »
Uma nova Aventura

Ao acabar um projecto, fico nun vazio a pensar num novo.
Decidi-me aprofundar em ESP32, habituado a programar Basic, não há escapatória de C++ se for para outros IDEs mais avançados.
Após a aplicação de um display ST7789 ao “galvo laser”, como costumo encomendar aos pares, sobrou um. Além da qualidade de imagem, requer um maior processamento que um simples AVR para 320x240.

A ideia foi esta:
https://hackaday.io/project/166707-esplay-micro
Um emulador NES com um micro esp32 e pouco mais.
(não vou fazer igual, se tiverem acesso ao layout da PCB, está uma aberração 100% auto-route)

Fiz uma compra ao nosso colega #MAntunes em 2019 do “Wemos Lolin32 Lite (ESP32)”.
https://lusorobotica.com/index.php?topic=9373.0
O único inconveniente desta placa é não ter memória PSRAM, logo não serve para emular.

Pela internet do “ESP32 Wrover”, encontrei na Mauser a um preço acessivel:
https://mauser.pt/catalog/product_info.php?products_id=096-8584

CPU and On­Chip Memory
• ESP32-S2 embedded, Xtensa® single-core
32-bit LX7 microprocessor, up to 240 MHz
• 128 KB ROM
• 320 KB SRAM
• 16 KB SRAM in RTC
Integrated Components on Module
• 40 MHz crystal oscillator
• 4 MB SPI flash
• 2 MB PSRAM

Ainda não sei se tem IOs suficientes para os switchs, em último caso uso um 74HC165 (8-Bit Parallel-Load Shift Registers) em modo SPI.

Acabei de receber a encomenda da Mauser + a solda da marca deles, a ver se tenho mais sorte desta vez :P

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #1 em: 03 de Fevereiro de 2024, 15:02 »
Olá a todos :)

Estive de volta a este bicho, e decidi fazer uma placa de testes antes de soldar outro na placa final.
Apesar de estarem atribuídos os IOs no software, agora posso comprovar via hardware o que pode funcionar ou não.


Não tem qualquer protecção EMI, tirando um pequeno fusível de +-1A, onde coloquei uma resistência de 1 ohm.


Com pitch de 2.54mm, a distância dos pares (30.48mm) requer duas breadboards encostadas.

Vista debaixo do modulo


Encomendei um pequeno rolo deles, e estou satisfeito, boa solda.



Código: [Seleccione]
Source file: C:\Users\Dropes\Desktop\NES\NES\ESP32_CPU_Memory_Info-master\ESP32_CPU_Memory_Info\ESP32_CPU_Memory_Info.ino
ESP32 Chip model: ESP32-S2
  Revision: 0
  Core count: 1
  Chip ID: 14343288
  Frequency: 240
  Cycle count: 837250441
  SDK version: v4.4.5
Heap:
  Total: 251132
  Used: 19832
  Free: 231300
  Largest block: 204788
  Minimum free since boot: 227992
Flash:
  Total: 4194304
  Speed: 80000000
Sketch:
  Size: 247696
  Free: 1310720
PSRAM:
  Total: 2095087
  Used: 260
  Free: 2094827
  Largest block: 2064372
  Minimum free since boot: 2094827
It's alive!!!  ;D
« Última modificação: 03 de Fevereiro de 2024, 16:30 por dropes »

Offline zordlyon

  • Mini Robot
  • *
  • Mensagens: 1.768
Re: Emulador NES em ESP32
« Responder #2 em: 05 de Fevereiro de 2024, 09:41 »
Muito fixe..  :D
Cumprimentos,
André Carvalho.

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #3 em: 05 de Fevereiro de 2024, 21:22 »
Olá :)

Tem dado trabalho, enganei-me no modulo  :-[

Deveria ser a versão "ESP32 WROVER, Dual core processor with Integrated 4MB Flash + 4MB PSRAM"
e encomendei a versão "ESP32 WROVER, Single core processor with Integrated 4MB Flash + 2MB PSRAM"

Esta versão tem mais IOs mas de resto é igual.
Creio que mesmo assim deverá funcionar, as especificações SNES são baixas...

Ando de volta do "Espressif IDF" em ambiente "VSCode"... meu rico bascom  :-\ lol

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.950
  • NERD!
Re: Emulador NES em ESP32
« Responder #4 em: 06 de Fevereiro de 2024, 14:59 »

Creio que mesmo assim deverá funcionar, as especificações SNES são baixas...

Deves querer dizer NES.;)
A SNES é 16 bits e umas ordens de magnitude mais complexa.

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #5 em: 08 de Fevereiro de 2024, 15:14 »

Creio que mesmo assim deverá funcionar, as especificações SNES são baixas...

Deves querer dizer NES.;)
A SNES é 16 bits e umas ordens de magnitude mais complexa.

Verdade, tropecei na consola.

Tento copiar um emulador de 8-bit/1.79 MHz com um micro de 32-bit/240 MHz, e está a dar luta.
Até agora, tenho apenas funcional o menu, e a leitura do ficheiro NES para a RAM, a partir daí bloqueia. (ainda por descobrir o motivo)

Cada vez está mais difícil fazer piscar um LED, ou é impressão minha  ???

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.950
  • NERD!
Re: Emulador NES em ESP32
« Responder #6 em: 08 de Fevereiro de 2024, 16:18 »
Não é impressão.

É avassalador a quantidade de novos sistemas disponíveis e a aparecer. Saudades quando a discussão era se usavas PIC ou AVR. Hoje em dia tens uma quantidade enorme de microcontroladores disponíveis, a preços super acessíveis mas arquiteturas cada vez mais complexas e cada um com o seu conjunto de periféricos. E se abrires a pestana para o que está a vir da china então (e sem ser tão mainstream como os ESP32), então é de cortar os pulsos: Padauk a 0,05€ em singles), WCH com Risc-V de simples a com GbE, tudo com programadores e placas de testes acessíveis.

E FPGA? Lattice MachXO2 a preços super acessíveis, packages soldáveis, com flash integrada (solução de 1 só chip, sem memória externa para bit-stream) a funcionar a single supply 3.3V, com opção de toolchain open source!

Isto com o me cruzei recentemente(e ainda me lembro), de certeza que há por aí muito mais... Quem me dera ter tempo e paciencia para explorar!!!

PS: Já pegaram no RP2040? Sou só eu que achei o compilador/toolchain/SDK intragável? Não me entendo com o cmake...
« Última modificação: 08 de Fevereiro de 2024, 16:21 por jm_araujo »

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #7 em: 09 de Fevereiro de 2024, 17:38 »
 ::)

Sem copiar, não vejo soluções de fazer um micro ler um código escrito por mim, realmente é necessário bastante tempo e sossego para desembrulhar todo o potencial de 5€.
Pequenas modificações e fico-me por aí, a não ser que encoste algumas bibliotecas e faça o pretendido.
Fora os AVR-8bits, aí assembly TT.

Agora com a pancada do AI, não me admirava nada que um micro salta-se da board e fosse à sua vida "- Tenho mais potencialidades lá fora!"

RP nunca lhes toquei, ainda estou a aquecer  :)

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #8 em: 13 de Fevereiro de 2024, 22:15 »
Hello  :)

Ando aqui ás voltas para tentar entender C, que linguagem mais complicada  :-\
Alguns progressos, já lê os ficheiros NES, mesmo os maiores.

O som via I2S também parece estar a funcionar bem, entretanto ainda não descobri o motivo de reiniciar na velocidade normal.
É possível alterar a velocidade SPI do display, e mesmo do emulador; mas é inútil ter um fps de 5.

Fonte:
https://github.com/nathalislight/NCAT


Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.950
  • NERD!
Re: Emulador NES em ESP32
« Responder #9 em: 14 de Fevereiro de 2024, 18:26 »
Ando aqui ás voltas para tentar entender C, que linguagem mais complicada  :-\

C não é assim tão mau, o  K&R lê-se num par de horas e tá lá tudo. O problema é lidar com bibliotecas e todo o código  herdado  nas varias plataformas.

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #10 em: 16 de Fevereiro de 2024, 14:22 »
Ando aqui ás voltas para tentar entender C, que linguagem mais complicada  :-\

C não é assim tão mau, o  K&R lê-se num par de horas e tá lá tudo. O problema é lidar com bibliotecas e todo o código  herdado  nas varias plataformas.

Baby-steps  :)

C tem particularidades em atalhos e comparações aritméticas que desconhecia, engano-me frequentemente:
- Maiúsculas / minusculas
- ; no final, faz-me lembrar o bom Pascal

Sim, as bibliotecas e recursos são uma dor de cabeça, além de estarem em diretórios separados, os recursos são de acordo com o ESP32, que por vezes fica difícil saber como alterar pequenas coisas, e recorro bastante á net para procurar soluções.

Neste momento já lê todos os ficheiros, e utiliza a PSRAM integrada, anteriormente gravava em flash cada ficheiro proveniente do SD... isso não era nada bom.

vamos ver...





« Última modificação: 16 de Fevereiro de 2024, 14:41 por dropes »

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #11 em: 19 de Fevereiro de 2024, 16:19 »
Boas

Não sei o que se passa, mas não consigo ter um frame-rate superior a 1 :-\
Já me certifiquei que o display está em SPI via hardware, se alterar para software, ainda fica pior.

Estou sem ideias, experimentei outra variante (pac-man) e funciona perfeitamente, mesmo os exemplos das bibliotecas correm bem.  :(

Pac-man: https://github.com/MhageGH/esp32_ILI9328_Pacman/tree/master

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #12 em: 27 de Fevereiro de 2024, 21:33 »
Olá pessoal  ;D

Decidi-me ficar pelo pac-man  :P
A ideia de um emulador é boa, entretanto fui para este, com uma resolução de 240x320, em vez dos 240x240 usada na emulação NES.



No post original do pac-man, não tem SOM, perde um bocado com isso quando o esp32 tem mais que possibilidades de o fazer.
Na reprodução dos sons, são 11 no total, alguns em loop, outros apenas uma vez em efeitos sonoros.
Demorei 10 minutos na programação dos switchs (mais uma falta), e 3 dias para colocar os sons (ainda sou meio noob nestas coisas).

O som ambiente (via loop) é reproduzido por um canal DAC 8bits do micro, e os efeitos são reproduzidos pelo 2º canal DAC; assim consegui manter uma qualidade sonora razoável, sem recorrer a um DAC externo.
Na saída do amplificador de som, o altifalante fica entre os canais, assim a mistura é efetuada e dispensa ao mesmo tempo condensadores de saída.

A placa está no forno e deverei terminar amanhã.

Não há nada melhor que começar uma linguagem nova, e colocar ponteiros para endereços. damn

Inté  :)


obs: todos os ficheiros (firmware e cad) ficarão disponíveis via Guit; com referência ao autor original.


last edit: esqueci-me por completo do regulador, a máxima tensão do micro é de 3.6V  :-[
                por enquanto está a funcionar bem, vou tentar soldar um LDO algures...
« Última modificação: 29 de Fevereiro de 2024, 20:24 por dropes »

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #13 em: 02 de Março de 2024, 21:01 »
Finalmente acabei  ::)

Uma revisão ao código e alterações de componentes, parece-me bem agora.

Mudanças:
- Esquema e conexões para protótipo
- Suporte ST7789
- Sons através de dois canais ESP32 8b DAC (ambiente / efeitos)
- Funções dos botões A e B
- Mostrar fantasmas assustados piscando antes de voltarem ao normal
- Monitor de capacidade da bateria
- Gravação do hiscore na flash (Esp32 não tem eeprom)

IDE Arduino.


Amanha devo publicar, algumas fotos vídeo e link Guithub.

Bom fim-de-semana  ;)

ps: hoje não foi dia de programação, lembrei-me que faltava gravar o hiscore, para não começar sempre do 0
« Última modificação: 03 de Março de 2024, 20:25 por dropes »

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #14 em: 05 de Março de 2024, 15:50 »