Home Homebrew Pubblicata la versione 1.0.4 di GB Interceptor, la soluzione open source per...

Pubblicata la versione 1.0.4 di GB Interceptor, la soluzione open source per riprodurre in streaming le cartucce dal Game Boy

661
0

Pubblicato un nuovo aggiornamento hotfix per GB Interceptor, la soluzione open source per riprodurre in streaming il gameplay dal Game Boy attraverso un Raspberry Pi con circuito integrato rp2040.

Questo nuovo aggiornamento corregge molti problemi riscontrati con il Game Boy Pocket e problemi con PCB che sembrano non funzionare con le versioni precedenti.

GB Interceptor sfrutta l’unico connettore accessibile, ovvero lo slot della cartuccia, unica strada percorribile senza dover intervenire via hardware, l’idea alla base era quella di creare un adattatore capace di intercettare una copia dei dati trasferiti.

Non è possibile accedere in modo casuale ai dati di interesse e non è possibile vedere i dati nella RAM che la CPU del Game Boy ha messo insieme dalle istruzioni grezze della cartuccia.

In particolare, non è possibile vedere la Video RAM contenente tutto il necessario per disegnare l’immagine sullo schermo. Da qui nasce la necessita di creare una copia della VRAM.

Per fare ciò si è reso necessario un emulatore dove venivano forniti i dati dal bus di memoria della cartuccia untilizzando un rp2040 (il microcontrollore del Raspberry Pi Pico) dividendone i core nelle due parti di elaborazione principali del Game Boy.

Un core emula la CPU per ricreare una copia della VRAM e l’altro core emula l’unità grafica del Game Boy, la PPU 4.

La documentazione, completa di schemi e collegamenti a repository github, si rende disponibile all’indirizzo https://there.oughta.be/a/game-boy-capture-cartridge

Changelog v1.0.4

  • Correzione: misurazione irregolare della temporizzazione dell’orologio su Game Boy Pocket, causando problemi in molti giochi.
  • Correzione: Interceptor non si avvia dopo il ciclo di spegnimento su alcune schede. Se hai una scheda che sembra funzionare dopo aver caricato il firmware, ma smette di funzionare dopo averla scollegata e ricollegata, questo risolverà sicuramente il problema. Ciò si verifica su schede su cui l’oscillatore a cristallo impiega un po’ più tempo per stabilizzarsi. Questo può semplicemente essere la conseguenza delle tolleranze di produzione e sembra verificarsi in circa 1 Interceptor su 20. Questa correzione attende semplicemente qualche millisecondo in più, il che non dovrebbe avere alcun effetto collaterale negativo.

Changelog v1.0.3

Questa versione introduce una visualizzazione sullo schermo che tornerà utile anche per i prossimi aggiornamenti futuri. Naturalmente, ci sono anche alcune correzioni.

  • Aggiunta la visualizzazione sullo schermo per indicare se la fusione dei fotogrammi è attivata o disattivata e l’impostazione predefinita è disattivata all’avvio.
  • Correzione: Controlla solo la coerenza del puntatore dello stack rispetto agli indirizzi sul bus se non punta alla VRAM perché questi indirizzi non sono affidabili sul DMG (corregge Pokemon rosso/blu sul DMG e probabilmente molti altri giochi sul DMG).
  • Correzione: Il rilevamento duplicato dopo il ritorno immediato dall’arresto non riesce in alcuni casi (riparazione di Pokemon giallo e forse pochi altri giochi).
  • Limita i passaggi di framerate consentiti per risolvere i problemi con le app che si bloccano altrimenti.
  • Mostra la versione sullo schermo di standby.

Per aggiornare, tenere premuto il pulsante [Flash] (di solito all’interno della custodia) mentre si connette l’Interceptor tramite USB e si trascina il file uf2 sottostante nel suo file system.

Changelog v1.0.2

  • Corretto il crash per i giochi che reimpostavano il registro div. (vedere #7 per un esempio).

Changelog v1.0.1

Questa versione migliora la compatibilità su MacOS e corregge diversi problemi sul Game Boy originale (DMG).

  • Migliorato il supporto MacOS (vedere #1).
  • Corretti diversi problemi sul Game Boy (DMG) originale in quanto mostra un indirizzo diverso sul bus della cartuccia mentre accede alla VRAM (i glitch includono tessere immondizia in Zelda, punteggio illeggibile durante la pausa in Tetris e probabilmente molti altri).
  • Consentito il riavvio senza attendere lo spegnimento del Game Boy (correzione del supporto Everdrive).
  • Corretto il problema con la trasmissione di frame USB avviata al di fuori di hblank/vblank (dovrebbe correggere occasionalmente i frame persi e alcuni problemi grafici minori).
  • Rilevamento più robusto per risincronizzare dopo un trasferimento da DMA a OAM nei casi in cui il loop inattivo non è visibile sul bus (correzione di Donkey Kong Land su DMG).
  • Consentita l’impostazione di frame rate arbitrari inferiori a 29 fps.
  • Aggiunta la sincronizzazione PPU per loop stretti utilizzando il registro STAT per attendere vblank.
  • Aggiunto il supporto per DMA dalla cartuccia (non testato).
  • Stringa della versione di output durante la connessione tramite seriale.
  • Migliorati i descrittori USB: Nome del dispositivo e calcolo dei limiti di bitrate.
  • A causa di alcuni controlli aggiuntivi durante la lettura dalla memoria (vedere il problema DMA VRAM sopra) il clock rp2040 doveva essere aumentato ulteriormente a 250MHz. Spero di poterlo richiamare quando avrò del tempo per le ottimizzazioni.

Download: gbinterceptor_case.zip

Download: gbinterceptor_firmware_v1.0.4.uf2

Download: gbinterceptor_pcb_bom.csv

Download: gbinterceptor_pcb_gerbers.zip

Download: gbinterceptor_pcb_position.csv

Download: Source code GB Interceptor v1.0.4

Fonte: twitter.com

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.