IPB

Benvenuto Visitatore ( Log In | Registrati )

Seguici su:    
 
Reply to this topicStart new topic
> Devkit ARM, libnds e stampa a video, Possibile che il modulo console sia così limitato?
Gemini
messaggio Tuesday 1 November 2011 - 12:30
Messaggio #1

Expert GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 1.443
Iscritto il: Sun 18 July 2004 - 17:15
Da: Lecce
Utente Nr.: 1.149
Feedback: 0 (0%)




Per chiunque fosse esasperato dall'orribile modulo di stampa di testo tramite console su DS, vi offro questo piccolo pezzo di codice in grado di stampare in maniera un po' più decente su entrambi gli schermi in modalità Text BG, e soprattutto usando font proporzionali e inviabili a qualsiasi coordinata dello schermo. I sorgenti, seppur provvisori e ancora un po' incompleti, li potete trovare qui con tanto di esempio pratico preso da una SVN di un progetto di porting a cui stavo lavorando.

Nell'esempio sono forniti due font, uno 8x8 e uno 16x16. Volendone creare di altri, andate nella SVN sotto Source\fontmake e prendete il programma esempio che sta lì. Modificandolo a dovere potrete creare qualsiasi font di sostituzione.

NOTA: L'unica parte che per ora non funziona affatto è la cancellazione delle linee di testo, ma non dovrebbe essere troppo complessa da sistemare. Questo problema è dovuto al fatto che il codice è riciclato in massa da un progetto di stampa su canvas bitmap, ovvero un sistema logico di impressione dei pixel abbastanza diverso rispetto a quello dei tile su DS.

Esempio:


Messaggio modificato da Gemini il Thursday 3 November 2011 - 14:07


--------------------

Il modo migliore per discutere con i pazzi è non discuterci affatto. E per chi si sente sempre attaccato da tutto e tutti, questo link è l'ideale. Sempre per i paranoici fissati: il mio nome non è Michele, boccalo'. :) Allestimento a breve di un parco interamente dedicato ai castori: che si apra la gara a chi rosica di più in mezzo a ragazzini, patologie e caselli (Ron Hubbard approverebbe); a seguire un nuovo atto de "I poracci" di XXCentury.
 Go to the top of the page
 
+Quote Post
Zio Name
messaggio Saturday 5 November 2011 - 14:13
Messaggio #2

Fanatic GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 1.238
Iscritto il: Mon 10 November 2008 - 21:27
Utente Nr.: 32.045
Feedback: 0 (0%)




È triste vedere come a nessuno freghi niente che arrivi Maria Renard a tirare pizze anche su DS .-.


--------------------
 Go to the top of the page
 
+Quote Post
Trivia
messaggio Saturday 5 November 2011 - 14:58
Messaggio #3

Fanatic GBA/NDS
Gruppo icone

Gruppo: Moderatori
Messaggi: 1.288
Iscritto il: Thu 31 May 2007 - 10:06
Da: Minkowski space
Utente Nr.: 18.491
Feedback: 1 (100%)

Codice Amico:
2921-9207-0800



CITAZIONE (Zio Name @ Saturday 5 November 2011 - 14:13) *
È triste vedere come a nessuno freghi niente che arrivi Maria Renard a tirare pizze anche su DS .-.

Mi sono perso qualcosa? Credevo fosse un mero placeholder, o Gemini ha fatto qualche annuncio in merito? ^ _ ^


--------------------


~ A man always seems the same size to himself, because he does not stand where we stand to look at him. ~
 Go to the top of the page
 
+Quote Post
Zio Name
messaggio Saturday 5 November 2011 - 15:06
Messaggio #4

Fanatic GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 1.238
Iscritto il: Mon 10 November 2008 - 21:27
Utente Nr.: 32.045
Feedback: 0 (0%)




CITAZIONE (Trivia @ Saturday 5 November 2011 - 14:58) *
Mi sono perso qualcosa? Credevo fosse un mero placeholder, o Gemini ha fatto qualche annuncio in merito? ^ _ ^


Quarta riga del primo paragrafo:

"li potete trovare qui con tanto di esempio pratico preso da una SVN di un progetto di porting a cui stavo lavorando."


--------------------
 Go to the top of the page
 
+Quote Post
Trivia
messaggio Saturday 5 November 2011 - 15:20
Messaggio #5

Fanatic GBA/NDS
Gruppo icone

Gruppo: Moderatori
Messaggi: 1.288
Iscritto il: Thu 31 May 2007 - 10:06
Da: Minkowski space
Utente Nr.: 18.491
Feedback: 1 (100%)

Codice Amico:
2921-9207-0800



CITAZIONE (Zio Name @ Saturday 5 November 2011 - 15:06) *
CITAZIONE (Trivia @ Saturday 5 November 2011 - 14:58) *
Mi sono perso qualcosa? Credevo fosse un mero placeholder, o Gemini ha fatto qualche annuncio in merito? ^ _ ^


Quarta riga del primo paragrafo:

"li potete trovare qui con tanto di esempio pratico preso da una SVN di un progetto di porting a cui stavo lavorando."

Sì l'avevo letto (col font 32 riesco ancora a leggere, nonostante tutto, ma sei gentilissimo ad indicarmene numero di riga e paragrafo), credevo fosse stato aperto un topic in merito come per il progetto originale o che ci fosse stato un annuncio esternamente.


--------------------


~ A man always seems the same size to himself, because he does not stand where we stand to look at him. ~
 Go to the top of the page
 
+Quote Post
The Lemon Man
messaggio Saturday 5 November 2011 - 16:32
Messaggio #6

Boss GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 486
Iscritto il: Sun 13 April 2008 - 21:07
Da: 0xdeadbeef
Utente Nr.: 26.789
Feedback: 0 (0%)




La console nelle libnds è solo e soltanto di debug, si può abusare degli sprite o (meglio) dell engine 3D per avere qualcosa di presentabile


--------------------
 Go to the top of the page
 
+Quote Post
Gemini
messaggio Saturday 5 November 2011 - 21:22
Messaggio #7

Expert GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 1.443
Iscritto il: Sun 18 July 2004 - 17:15
Da: Lecce
Utente Nr.: 1.149
Feedback: 0 (0%)




Per fortuna il mio codice non fa abuso di sprite o altre risorse molto "consumabili". tongue.gif Comunque Zio vi ha dato una dritta vera, sto tentando di portare Red Moon su DS, ma per ora la cosa è moooooooolto sperimentale e incompleta.


--------------------

Il modo migliore per discutere con i pazzi è non discuterci affatto. E per chi si sente sempre attaccato da tutto e tutti, questo link è l'ideale. Sempre per i paranoici fissati: il mio nome non è Michele, boccalo'. :) Allestimento a breve di un parco interamente dedicato ai castori: che si apra la gara a chi rosica di più in mezzo a ragazzini, patologie e caselli (Ron Hubbard approverebbe); a seguire un nuovo atto de "I poracci" di XXCentury.
 Go to the top of the page
 
+Quote Post
Daviex
messaggio Saturday 5 November 2011 - 22:43
Messaggio #8

Expert GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 1.708
Iscritto il: Thu 20 December 2007 - 18:35
Da: Messina
Utente Nr.: 23.776
Feedback: 0 (0%)




La versione PSX com'è combinata?

Scusate l'off topic, ma visto che ci siamo chiedo xD


--------------------


 Go to the top of the page
 
+Quote Post
Gemini
messaggio Monday 7 November 2011 - 00:50
Messaggio #9

Expert GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 1.443
Iscritto il: Sun 18 July 2004 - 17:15
Da: Lecce
Utente Nr.: 1.149
Feedback: 0 (0%)




Una revisione più o meno recente si può trovare su quest'altra SVN.


--------------------

Il modo migliore per discutere con i pazzi è non discuterci affatto. E per chi si sente sempre attaccato da tutto e tutti, questo link è l'ideale. Sempre per i paranoici fissati: il mio nome non è Michele, boccalo'. :) Allestimento a breve di un parco interamente dedicato ai castori: che si apra la gara a chi rosica di più in mezzo a ragazzini, patologie e caselli (Ron Hubbard approverebbe); a seguire un nuovo atto de "I poracci" di XXCentury.
 Go to the top of the page
 
+Quote Post
sverx
messaggio Monday 21 November 2011 - 11:27
Messaggio #10

Utente GBARL
Gruppo icone

Gruppo: Membri
Messaggi: 53
Iscritto il: Mon 10 November 2008 - 15:12
Utente Nr.: 32.035
Feedback: 1 (100%)




CITAZIONE (Gemini @ Tuesday 1 November 2011 - 13:30) *
[...] vi offro questo piccolo pezzo di codice in grado di stampare in maniera un po' più decente su entrambi gli schermi in modalità Text BG, e soprattutto usando font proporzionali e inviabili a qualsiasi coordinata dello schermo. [...]


... scusami, non ho mica capito in che modo riesci a rendere dei font proporzionali su un TextBG mellow.gif Puoi chiarirmi un po' meglio?

Grazie! smile.gif
 Go to the top of the page
 
+Quote Post
Gemini
messaggio Tuesday 22 November 2011 - 20:10
Messaggio #11

Expert GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 1.443
Iscritto il: Sun 18 July 2004 - 17:15
Da: Lecce
Utente Nr.: 1.149
Feedback: 0 (0%)




Utilizzo una serie di calcoli (semplici shift e salti su puntatore) per spostare la grafica tile del font e disegnare sul TextBG come fosse un canvas, per il resto faccio il mapping su tilemap con indici incrementali in modo che i tile del canvas corrispondano fedelmente a ciò che deve uscire su schermo.


--------------------

Il modo migliore per discutere con i pazzi è non discuterci affatto. E per chi si sente sempre attaccato da tutto e tutti, questo link è l'ideale. Sempre per i paranoici fissati: il mio nome non è Michele, boccalo'. :) Allestimento a breve di un parco interamente dedicato ai castori: che si apra la gara a chi rosica di più in mezzo a ragazzini, patologie e caselli (Ron Hubbard approverebbe); a seguire un nuovo atto de "I poracci" di XXCentury.
 Go to the top of the page
 
+Quote Post
The Lemon Man
messaggio Tuesday 22 November 2011 - 21:56
Messaggio #12

Boss GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 486
Iscritto il: Sun 13 April 2008 - 21:07
Da: 0xdeadbeef
Utente Nr.: 26.789
Feedback: 0 (0%)




Quindi disegni su un canvas lineare e poi spezzetti tutto in tile ?


--------------------
 Go to the top of the page
 
+Quote Post
Gemini
messaggio Wednesday 23 November 2011 - 01:52
Messaggio #13

Expert GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 1.443
Iscritto il: Sun 18 July 2004 - 17:15
Da: Lecce
Utente Nr.: 1.149
Feedback: 0 (0%)




Disegno a blocchi logici di 8x8, niente canvas lineare (si perderebbe troppo tempo a convertire).


--------------------

Il modo migliore per discutere con i pazzi è non discuterci affatto. E per chi si sente sempre attaccato da tutto e tutti, questo link è l'ideale. Sempre per i paranoici fissati: il mio nome non è Michele, boccalo'. :) Allestimento a breve di un parco interamente dedicato ai castori: che si apra la gara a chi rosica di più in mezzo a ragazzini, patologie e caselli (Ron Hubbard approverebbe); a seguire un nuovo atto de "I poracci" di XXCentury.
 Go to the top of the page
 
+Quote Post
Aurelio
messaggio Wednesday 23 November 2011 - 11:19
Messaggio #14

DsOs Developer
Gruppo icone

Gruppo: Membri
Messaggi: 2.807
Iscritto il: Tue 7 June 2005 - 09:23
Da: Vico Equense(NA)
Utente Nr.: 5.122
Feedback: 6 (100%)

Codice Amico:
2664-2091-2256



Cioè fai qualcosa del tipo:
CODICE
int x=100;
int y=120;
int c=RGB15(31, 0, 31);
tile[(x>>3)+(y<<2)][(x&7)+((y&7)<<3)]=c;

Ho capito bene?


--------------------
 Go to the top of the page
 
+Quote Post
Gemini
messaggio Wednesday 23 November 2011 - 19:32
Messaggio #15

Expert GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 1.443
Iscritto il: Sun 18 July 2004 - 17:15
Da: Lecce
Utente Nr.: 1.149
Feedback: 0 (0%)




Quello è rendering a 16 bpp, mentre il mio funziona su TextBG a 4 bpp. La funzione che imprime i dati è questa:
CODICE
/*======================================================================
Does all the actual pixel impression. Processes 8x? segments.
=======================================================================*/
void RenderCanvasChar(BMP_CANVAS* canvas, u32 *conv, int x, int y, int ch_width, int ch_height)
{
        int i, trest, row_width, j;
        u32 shift, *ccanvas, *tcanvas;

        // fast reference
        ccanvas=canvas->bitmap;
        row_width=canvas->row_w;
        // set tile rest
        trest=x%T_WIDTH;
        // seek canvas to x and y
        ccanvas+=(x/T_WIDTH)*T_SIZE;
        ccanvas+=(y/T_WIDTH*0x100)+(y%T_WIDTH);
        // next 4 pixels in the canvas
        tcanvas=ccanvas+T_SIZE/*ccanvas+1*/;
        
        shift=trest*4;
        for(i=0, j=y%T_WIDTH; i<ch_height; i++, j++)
        {
                if(j>=T_WIDTH) {ccanvas+=0x100-T_SIZE; j=0;}
                // shift new tile to the right and include into the old buffer
                *ccanvas|=conv[i]<<shift;
                ccanvas++;
        }

        trest+=ch_width;        // trest+ 1~8
        if(trest>T_WIDTH)
        {
                trest-=T_WIDTH;
                shift=(ch_width-trest)*4;
                // move pixels to the right
                for(i=0, j=y%T_WIDTH; i<ch_height; i++, j++)
                {
                        if(j>=T_WIDTH) {tcanvas+=0x100-T_SIZE; j=0;}
                        *tcanvas|=conv[i]>>shift;
                        tcanvas++;
                }
        }
}


--------------------

Il modo migliore per discutere con i pazzi è non discuterci affatto. E per chi si sente sempre attaccato da tutto e tutti, questo link è l'ideale. Sempre per i paranoici fissati: il mio nome non è Michele, boccalo'. :) Allestimento a breve di un parco interamente dedicato ai castori: che si apra la gara a chi rosica di più in mezzo a ragazzini, patologie e caselli (Ron Hubbard approverebbe); a seguire un nuovo atto de "I poracci" di XXCentury.
 Go to the top of the page
 
+Quote Post
sverx
messaggio Thursday 24 November 2011 - 13:17
Messaggio #16

Utente GBARL
Gruppo icone

Gruppo: Membri
Messaggi: 53
Iscritto il: Mon 10 November 2008 - 15:12
Utente Nr.: 32.035
Feedback: 1 (100%)




Capito. Usi un 32x32 text BG dove nella mappa hai messo tutti i 1024 tile disponibili, e poi disegni sui tile come se fosse una bitmap organizzata a blocchi di 8x8 pixel invece che un'array lineare. A questo punto i caratteri non li carichi nemmeno in VRAM.
Solo mi chiedevo: qual'è il vantaggio di questo invece di usare un BG in modo bitmap? Che non c'è il modo 16 colori? Che puoi usare anche il BG0 o BG1 se vuoi? O altri vantaggi? unsure.gif

 Go to the top of the page
 
+Quote Post
Gemini
messaggio Thursday 24 November 2011 - 20:33
Messaggio #17

Expert GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 1.443
Iscritto il: Sun 18 July 2004 - 17:15
Da: Lecce
Utente Nr.: 1.149
Feedback: 0 (0%)




Sostanzialmente con il layer in bitmap puoi disegnare solo su uno dei due schermi e rimani a corto di altri BG supplementari, oltre a dover fare tutte le operazioni a 16 bit (non il massimo della velocità). Con la mia configurazione puoi scrivere il testo su qualsiasi BG e stratificare anche se necessario.


--------------------

Il modo migliore per discutere con i pazzi è non discuterci affatto. E per chi si sente sempre attaccato da tutto e tutti, questo link è l'ideale. Sempre per i paranoici fissati: il mio nome non è Michele, boccalo'. :) Allestimento a breve di un parco interamente dedicato ai castori: che si apra la gara a chi rosica di più in mezzo a ragazzini, patologie e caselli (Ron Hubbard approverebbe); a seguire un nuovo atto de "I poracci" di XXCentury.
 Go to the top of the page
 
+Quote Post
sverx
messaggio Friday 25 November 2011 - 09:59
Messaggio #18

Utente GBARL
Gruppo icone

Gruppo: Membri
Messaggi: 53
Iscritto il: Mon 10 November 2008 - 15:12
Utente Nr.: 32.035
Feedback: 1 (100%)




CITAZIONE (Gemini @ Thursday 24 November 2011 - 21:33) *
con il layer in bitmap puoi disegnare solo su uno dei due schermi

no, probabilmente confondi con il modo FrameBuffer, che c'è solo sul MAIN engine. La modalità bitmap è possibile sui BG2 e BG3 in modo rotazionale esteso sia sul MAIN che sul SUB engine...
CITAZIONE (Gemini @ Thursday 24 November 2011 - 21:33) *
oltre a dover fare tutte le operazioni a 16 bit (non il massimo della velocità).

La modalità bitmap supporta anche i bitmap a 256 colori (8 bit per pixel, non 16).

quello che intendo dire, in breve, è: solo nel caso che due BG in modalità bitmap non siano sufficienti sarei disposto ad utilizzare un BG in modo tiled per usarlo -sostanzialmente- come se fosse una bitmap, complicandomi però la vita nel blitting sulla memoria organizzata come archivio delle tessere...

mellow.gif
 Go to the top of the page
 
+Quote Post
Gemini
messaggio Friday 25 November 2011 - 13:31
Messaggio #19

Expert GBA/NDS
Gruppo icone

Gruppo: Membri
Messaggi: 1.443
Iscritto il: Sun 18 July 2004 - 17:15
Da: Lecce
Utente Nr.: 1.149
Feedback: 0 (0%)




Il punto è che non si tratta di nulla di complicato, anzi. Nelle librerie Nintendo fanno praticamente la stessa roba, anche se con molti più giri e livelli di astrazione.


--------------------

Il modo migliore per discutere con i pazzi è non discuterci affatto. E per chi si sente sempre attaccato da tutto e tutti, questo link è l'ideale. Sempre per i paranoici fissati: il mio nome non è Michele, boccalo'. :) Allestimento a breve di un parco interamente dedicato ai castori: che si apra la gara a chi rosica di più in mezzo a ragazzini, patologie e caselli (Ron Hubbard approverebbe); a seguire un nuovo atto de "I poracci" di XXCentury.
 Go to the top of the page
 
+Quote Post
oricians
messaggio Monday 12 December 2011 - 18:16
Messaggio #20

Special User
Gruppo icone

Gruppo: Membri
Messaggi: 113
Iscritto il: Wed 9 August 2006 - 09:19
Utente Nr.: 12.728
Feedback: 0 (0%)




Decisamente interessante.
Vediamo se con questo sistema riesco a risolvere qualche problemino sull'esposizione di char che ho avuto nel mio progetto IOCEROSOCCER.
Grazie dell'info Gemini.


--------------------
DSORIC
 Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utenti stanno leggendo questa discussione (1 visitatori e 0 utenti anonimi)
0 utenti:

 

Modalità di visualizzazione: Normale · Passa a: Lineare · Passa a: Outline


RSS Versione Lo-Fi Oggi è il: Thu 20 June 2013- 07:03

.: GbaRL.it :. Copyright © 2003-2013, All Rights Reserved.
Loghi, documenti e immagini contenuti in questo Sito appartengono ai rispettivi proprietari,
e sono resi pubblici sotto licenza Creative Commons
“GBArl.it partecipa al Programma Affiliazione Amazon EU, un programma di affiliazione che consente ai siti di percepire una commissione pubblicitaria
pubblicizzando e fornendo link ai siti Amazon.co.uk/Amazon.it.”

Creative Commons License
.::.