1. BENVENUTO SU CONSOLE TRIBE

    Benvenuto, stai navigando nella nostra community come ospite

    Avere un account su Console Tribe ti permetterà di creare e partecipare alle discussioni e al mercatino, organizzare tornei e partite online, iniziare conversazioni personali con gli altri giocatori del forum e di utilizzare tutte le funzioni di questo sito.

    Registra il tuo account in meno di 5 secondi, se vuoi puoi sfruttare i login social via Facebook, Google Plus o Twitter.

Mappatura della VRAM

Discussione in 'DS Hardware generale' iniziata da GendoIkari, 10 Maggio 2007.

  1. GendoIkari

    GendoIkari Tribe Newbie

    Registrato:
    9 Maggio 2007
    Messaggi:
    4
    "Mi Piace" ricevuti:
    0
    Punteggio:
    1
    Ho fatto le dovute ricerche come da regolamento, ma non ho trovato risposte.

    Mi ritrovo nei problemi a capire il concetto che sta dietro alla mappatura della VRAM del NDS. Sarà anche perchè ho avuto difficoltà nel tradurre dall'inglese alcuni tutorial.
    Comunque questo è lo schema del NDS

    [​IMG]

    I Bank di memoria, dall'A all'I sono banchi fisici, giusto? Ma usando le libnds si usano dei bank virtuali?
    Ho capito vagamente che si deve mappare la memoria fisica ma mi sfuggi il senso profondo di questo codice:
    Codice:
    	//set frame buffer mode 0
    	videoSetMode(MODE_FB0);
     
    	//enable VRAM A for writting by the cpu and use 
    	//as a framebuffer by video hardware
    	vramSetBankA(VRAM_A_LCD);
    Intendiamoci, il mio dubbio non è sul mode buffer che sto settando, ma sulla meccanica che "metto in moto" con queste due linee.
    Non capisco bene questa tabella:
    http://www.dev-scene.com/NDS/NDS_Tutorials_VramTable
    A seconda di cosa mappo cambiano gli indirizzi? Ma quegli indirizzi sono della memoria fisica o di quella virtuale?
    Aiuto faccio casino!

    Avrei bisogno gentilmente di una spiegazione profonda e concettuale della cosa :sorry: aiutateme vi prego!
  2. SukkoPera

    SukkoPera <B><font color=#028482>Nintendo Freak</B></font co

    Registrato:
    21 Dicembre 2005
    Messaggi:
    3.353
    "Mi Piace" ricevuti:
    0
    Punteggio:
    36
    Località:
    Where time stands still
    Eh, gran belle domande... Peccato che non ti sappia rispondere :(. Cmq il DS sicuramente non supporta la memoria virtuale (no TLB), quindi quello che fai è una mera attivazione di una zona di memoria piuttosto che un'altra. Purtroppo non mi intendo di programmazione "grafica" e il senso di tutto ciò sfugge anche a me :(((.

    Cmq, se vai sul canale IRC di #gbadev o sul forum, solitamente c'è gente molto disponibile, che ti spiegherà tutto.
  3. GendoIkari

    GendoIkari Tribe Newbie

    Registrato:
    9 Maggio 2007
    Messaggi:
    4
    "Mi Piace" ricevuti:
    0
    Punteggio:
    1
    Grazie lo stesso, si ho visto il sito di gbadev, e ho chiesto anche lì.
    Certo che è difficile trovare documentazione esaustiva riguardo all' NDS dev.
    Porca miseria è già uscito da anni, ha venduto più di 40 milioni, insomma chi ha fatto le ndslib, chi ci sviluppa può anche curare un po' di più la documentazione, no?
  4. SukkoPera

    SukkoPera <B><font color=#028482>Nintendo Freak</B></font co

    Registrato:
    21 Dicembre 2005
    Messaggi:
    3.353
    "Mi Piace" ricevuti:
    0
    Punteggio:
    36
    Località:
    Where time stands still
    Il fatto è che la gente che lavora su devkitpro è poca, e preferiscono utilizzare la poca manodopera per migliorare il kit, piuttosto che per documenterlo. In realtà cmq ci sono un po' di tutorial di terze parti abbastanza esplicativi. In ogni caso, credo che la documentazione migliore sia vedere programmi già fatti.
  5. ifthenelse

    ifthenelse Tribe Newbie

    Registrato:
    3 Luglio 2008
    Messaggi:
    1
    "Mi Piace" ricevuti:
    0
    Punteggio:
    1
    Località:
    Treviso / Venezia
    La prima istruzione si riferisce al tipo di modalità grafica da usare per lo schermo principale, la seconda dà direttive al DS su come gestire i dati da visualizzare in memoria. Ci sono vari modi per impostare il tipo di background col quale lavorare. Questi modi (o meglio modalità) sono 7 per il Main Engine e 6 per il Sub Engine. Ogni engine gestisce uno dei due schermi.

    VideoSetMode()
    ti permette di settare la modalità grafica nello schermo principale (che di default in devkitPro è quello superiore e che è gestito dal Main Engine)

    VideoSetModeSub() imposta la modalità grafica dello schermo secondario (inferiore di default, gestito dal Sub Engine)

    VideoSetMode(MODE_FB0)
    imposta lo schermo superiore in visualizzazione del FrameBuffer, ovvero visualizzando il contenuto della memoria direttamente come se fosse una bitmap.
    qualche piccola spiegazione >> http://www.double.co.nz/nintendo_ds/nds_develop2.html

    Invece, l'istruzione successiva VideoSetBankA(VRAM_A_LCD); da quel che ho capito permette di lavorare senza mappare i dati in memoria. La situazione dovrebbe essere questa: tu lavori su un'area del Banco di memoria video che funge da schermo. Tutto quello che verrà disposto all'interno di quest'area il DS lo rappresenterà su schermo. Le istruzioni successive probabilmente verranno mappate nelle prime aree disponibili... Ad ogni modo ho trovato questo tutorial che (devo ancora provare) mi sembra spieghi con migliore precisione la cosa, oltre ad offrire anche qualche spunto per disegnare delle forme. Se sei ancora interessato facci un giro.