NSA - Non Solo Amiga

ROBOTICA - AUTOMAZIONE - EMBEDDED => Microcontrollori - Elettronica - Interfacciamento. => Topic aperto da: legacy - 04 Ottobre 2014, 19:02:18

Titolo: dead
Inserito da: legacy - 04 Ottobre 2014, 19:02:18
dead
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: Z80Fan - 04 Ottobre 2014, 19:21:14
Ma prenditi un vero GameBoy no? :D

Prendi un GameBoy Color oppure un Advance usati, costano pochissimo e si trovano a pacchi; per entrambi esistono SDK amatoriali che hanno già tutto quello che serve per creare i giochi e se ti senti creativo prendi il manualone e ti scrivi le routine direttamente in assembly. :D

L'unico svantaggio è che non hai l'USB per caricare i programmi, e quindi devi accontentarti dell'emulatore. Io avevo un'idea di fare una cartuccia per il GBC con una microSD e un sistema che simula i vari tipi di cartuccia, in modo sia da poter caricare molte ROM sia per poter caricare programmi personalizzati. Non sarebbe male come semplice progettino ad esempio per esercitarsi sulla creazione di PCB.
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: TheKaneB - 04 Ottobre 2014, 20:56:21
Io ho avuto la fortuna di lavorare su uno di questi:
(http://nintendoagemedia.com/users/181/photobucket/3D066BC2-F4A6-384E-9BA2432A7C4F2DF3.png)

La scatola blu è un emulatore di CPU completo e totale. Puoi debuggare i due processori del DS step by step, senza grossi problemi (eccetto per i bug di Metrowerks CodeWarrior). :)
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: TheKaneB - 04 Ottobre 2014, 20:58:01
qui si vede meglio:
(http://www.gamesniped.com/wp-content/uploads/2012/06/Nintendo-IS-NITRO-Emulator-DS-Game-Boy.jpg)
(http://bimg1.mlstatic.com/is-nitro-emulator-para-colecionador_MLB-F-4463781823_062013.jpg)
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: TheKaneB - 04 Ottobre 2014, 21:12:29
eheh non è mia, ho preso foto a caso da Internet :D
Ci lavoravo 5-6 anni fa quando facevo giochi per il DS :)
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: cdimauro - 04 Ottobre 2014, 21:45:51
Il bello di quel coso e' che "volendo", siccome alla fine e' un Arduino con l'LCD dei un CELL '90
ci si attacca sopra AVRStudio + Arduino-plugin e l'Appeal si impenna :D
Con la benedizione di Banzi... ::)
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: Allanon - 05 Ottobre 2014, 00:27:26
A me invece quel coso del primo post incuriosisce non poco :-)
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: Z80Fan - 05 Ottobre 2014, 02:23:10
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 ;D)
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=60
http://store.kitsch-bent.com/product/usb-64m-smart-card
http://www.gameboy-advance.net/flash_card/gba_flash_advance_cards.htm

Quello 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 (http://gbdev.gg8.se/wiki/articles/Memory_Bank_Controllers) (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.
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: Z80Fan - 05 Ottobre 2014, 16:43:03
Il problema e' nel debugger, se lo vuoi.

Qui però non consideri la cosa più importante: gli emulatori. :D

Praticamente tutti hanno la possibilità di guardare dentro la memoria e disassemblare sul momento il codice, oltre a poter mostrare il contenuto dei vari framebuffer e delle palette colori.
Visual Boy Advance dovrebbe avere anche il supporto per la connessione gdb, ma non la ho mai sperimentata e non so quanto funziona.
NO$GBA e NO$GMB sono molto avanzati nelle feature di debug che hanno, solo che non sono del tutto gratuiti.
Ho scoperto anche questo (http://bgb.bircd.org/) emulatore che ha molte funzioni di debug però gira solo su Windows.


Cmq facci sapere cosa tiri fuori con quel macinino che ti sei comprato! ;D
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: TheKaneB - 05 Ottobre 2014, 17:33:12
No$GBA l'ho usato professionalmente, è un gran bel tool :)
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: TheKaneB - 05 Ottobre 2014, 21:19:11
mai avuto il GBA, sorry :(
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: TheKaneB - 05 Ottobre 2014, 22:28:08
no, dal GameGear (come giocatore) al DS (prima come programmatore poi come giocatore) :D
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: xteamsoftware - 06 Ottobre 2014, 22:45:17
GBA aveva un sistema con un'interfaccia SCSI da collegarsi al computer ( un GBA con una cartuccia che si collegava a questa interfaccia che faceva riconoscere il GBA come un'unità esterna ). Era possibile fare il debug mediante il cavo/interfaccia.

Per "provare" le cartucce avevamo preso un kit da Hong Kong con lettore + cartuccia, in questo modo provavi direttamente la cartuccia nel GBA senza passare per l'interfaccia.

C'era anche qualcosa ( non mi ricordo se kit o altro ) che serviva per sproteggere i giochi ( sempre da Hong Kong ) ma non ricordo come funzionava ( una specie di cavo con un qualcosa tipo actionReplay, ma non l'ho mai provato o visto dal vivo e potrei ricordare male )
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: Z80Fan - 07 Ottobre 2014, 01:39:55
capit

altra cosa che mi chiedevo, il GBA monta una CPU ARM7 ed un coprocessore GB-z80
qualcuno sa o ha info precise su come funziona nello specifico il coprocessore ?

Credo che il BIOS ARM controlli quale cartridge è collegata al connettore (le cartucce GB e GBA sono compatibili come pinout, ma ovviamente le GBA sono un po' più avanzate), e in caso rilevi una cartuccia GB/GBC (basta controllare l'header nei primi 256 byte della cartuccia), avvia lo Z80 che prende il controllo del sistema.

Praticamente ogni GBA include un intero GBC in hardware che prende il controllo quando viene inserita la cartuccia adeguata.

Non credo i due processori possano girare contemporaneamente.
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: TheKaneB - 07 Ottobre 2014, 01:49:11
il DS, pur non contenendo nessun core Z80, è 100% (o quasi) compatibile con il GBA. Per cui credo che lo Z80 venga semplicemente spento e amen quando si tratta di gestire codice GBA nativo / ARM7TDMI.
Titolo: Re:Volete sviluppare un video game tipo GameBoy ?
Inserito da: Z80Fan - 07 Ottobre 2014, 02:16:39
il DS, pur non contenendo nessun core Z80, è 100% (o quasi) compatibile con il GBA. Per cui credo che lo Z80 venga semplicemente spento e amen quando si tratta di gestire codice GBA nativo / ARM7TDMI.

Esatto, che poi alla fine un ARM a 16 MHz poco se ne fa di un Z80 menomato a 8 MHz. Alla fine già nel GBC il sistema era un unico system-on-a-chip, e dato che il GBA anch'esso ne ha uno solo (http://reinerziegler.de/GBA/gba_CPU2.jpg), presumo che ci sia proprio esattamente un GBC incastrato nel die dell'ARM.
Dato che il GBA permette di ridimensionare al volo la schermata del GBC (la si può fare esatta 1:1 o stretchata per riempire lo schermo più largo), credo che il GBC disegni la sua schermata su un qualche "framebuffer" nella memoria GBA, e poi i nuovi circuiti video si preoccupano di inviarlo a schermo.

Più o meno come facevano le prime PS3, che includevano interamente una PS2 al fine di garantire la compatibilità esatta.