escluso GBA (che e' un ARM puro) per il GB direi: + o -
come sai l'SDK e' basato su SDCC + un tot di hack perche' GB non e' esattamente una z80.
l'SDK alla fine e' diventato maturo e stabile negli intorno del 2004, oggi e' quasi abbandonato
(io non vedo commit recenti da un bel po' di anni)
Beh ma va bene così alla fine: il GBC è sempre quello, e anche nel 2004 era abbondantemente documentato. SDCC, anche se non è un drago nell'ottimizzazione o generazione codice, è lo stesso usabile visto che se qualcosa richiede alte prestazioni/timing lo si fa in assembly senza tanti problemi (è una parte del divertimento a programmare un hardware così piccolo
)
Di assemblatori per Z80/GB ce ne sono tanti quindi lì non è un problema.
resta ancora un po' di fastidio nel caricare le immagini
qualcuno aveva annunciato delle cartucce come quella che proponi
di fatto non le hanno mai realizzate in forma di kit e/o di progetto pubblico a prova di utonto
ci sono in giro molti e molti hack, dal tizio che si fila la cartuccia (come ho fatto io)
al tizio che dissalda tutto ad aria calda e ci infila su l'impossibile
Esistono delle cosiddette "flash cards" sia per GBC che per GBA, tipo queste:
http://krikzz.com/index.php?route=product/product&product_id=60http://store.kitsch-bent.com/product/usb-64m-smart-cardhttp://www.gameboy-advance.net/flash_card/gba_flash_advance_cards.htmQuello che pensavo io era una cartuccia che ti presenta un menù all'avvio per scegliere la ROM da caricare, e poi la caricava dalla SD e si metteva in modalità emulazione. Farlo non è neanche difficile, perchè le cartucce GB non sono altro che unità di memoria, con un bus indirizzi e dati e qualche segnale di controllo.
La parte più difficile è simulare i cosiddetti chip
MBC (Memory Bank Controller) che servono a regolare il bank switching per ROM molto grandi.
Ci sono 4 modelli diversi di MBC (1, 2, 3, 5), e sono tutti completamente documentati, quindi il problema maggiore è decidere come simularli. Si può usare una CPLD o FPGA, però si ha tutta la complessità di doverle programmare e mettere nel PCB, accanto all'inevitabile microcontroller che deve gestire la SD e il caricamento dei dati.
Un'idea più recente è quella di usare un microcontrollore abbastanza veloce e emulare via software il comportamento dell'MBC appropriato: la CPU del GBC gira a 4/8 MHz (4 in modalità GB, 8 in GBC), ma se rispetta i timing di uno Z80 ci mette vari cicli di clock per concludere un accesso in memoria, quindi non credo che il bus vari più di 1 MHz. Il codice da far girare su questo microcontroller non è molto complicato, perchè deve solo impostare delle linee di indirizzo verso la memoria e lasciare che la SRAM parli con lo Z80 sul suo bus.
La parte più difficile diventa quindi trovare una SRAM abbastanza grande da simulare qualsiasi cartuccia possibile ovvero 8MB ROM + 128 KB RAM, roba praticamente impossibile da trovare (specialmente considerando che deve poter funzionare a 5V). Uno potrebbe pensare di usare una DRAM e fare il refresh quando lo Z80 non sta accedendo, ma qui si rasenta la follia.
e pure in giro ormai il GB non se lo fila + nessuno
Questo è assolutamente falso: come tutte le retro-console e -computers, c'è sempre una demoscene dietro o semplicemente nuovi programmi homebrew che escono; Gameboy e questi altri sistemi saranno ancora programmati e conosciuti fra 5, 10 anni (in realtà non morirà mai).
Quel macinino lì ti assicuro morirà in meno di un anno, in realtà si potrebbe dire che non è mai "vissuto"; in sostanza: buono per te che ci giochi e ti diverti a fare i programmini, ma non sperare di trovare una grande community o tanti giochi, così come non ci sono stati per le varie e varie miniconsole Arduino che si sono viste nel corso degli anni (quel form-factor non è per niente nuovo, ne avrò viste almeno altre 10 di console simili).
Secondo me se lasciavano perdere tutte quelle puttanate Arduino, spendevano un po' di più per uno schermo e processore decente (magari un bel Cortex-M4 che è bello potente ma pur sempre economico e facile da usare sulla board), ci tiravano fuori un macinino un po' più attraente sia per i programmatori, sia per persone che vogliono solo giocare ai giochini fatti dagli altri.