IPB

Benvenuto Visitatore ( Log In | Registrati )

Seguici su:    
 
Reply to this topicStart new topic
> più di una palette nds
nick98t
messaggio Monday 14 May 2012 - 13:52
Messaggio #1

Niubbo
Gruppo icone

Gruppo: Membri
Messaggi: 8
Iscritto il: Fri 2 September 2011 - 11:16
Utente Nr.: 55.762
Feedback: 0 (0%)

Codice Amico:
102030



frantic4yc.gif aiuto!! 26.gif
mi aiutate a far funzionare questo codice??

CODICE
#include <nds.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

//---------------------------------------------------------------------------------
int main(void) {
    //---------------------------------------------------------------------------------
    int i = 0;

    videoSetMode(MODE_0_2D);
    videoSetModeSub(MODE_0_2D);

    vramSetBankA(VRAM_A_MAIN_SPRITE);
    vramSetBankD(VRAM_D_SUB_SPRITE);

    oamInit(&oamMain, SpriteMapping_1D_32, false);
    oamInit(&oamSub, SpriteMapping_1D_32, false);

    u16* gfx = oamAllocateGfx(&oamMain, SpriteSize_16x16, SpriteColorFormat_256Color);
    u16* gfxSub = oamAllocateGfx(&oamSub, SpriteSize_16x16, SpriteColorFormat_256Color);

    for(i = 0; i < 16 * 16 / 2; i++)
    {
        gfx[i] = 1 | (1 << 8);
        gfxSub[i] = 1 | (1 << 8);
    }

    SPRITE_PALETTE[0] = RGB15(0,31,0);
    SPRITE_PALETTE[1] = RGB15(31,0,0);
    oamSet(&oamMain, //main graphics engine context
    0,           //oam index (0 to 127)  
    0, 0,   //x and y pixle location of the sprite
    0,                    //priority, lower renders last (on top)
    0,                      //this is the palette index if multiple palettes or the alpha value if bmp sprite    
    SpriteSize_16x16,    
    SpriteColorFormat_256Color,
    gfx,                  //pointer to the loaded graphics
    -1,                  //sprite rotation data  
    false,               //double the size when rotating?
    false,            //hide the sprite?
    false, false, //vflip, hflip
    false    //apply mosaic
    );
    oamUpdate(&oamMain);
    oamSet(&oamMain, //main graphics engine context
    1,           //oam index (0 to 127)  
    16, 16,   //x and y pixle location of the sprite
    0,                    //priority, lower renders last (on top)
    1,                      //this is the palette index if multiple palettes or the alpha value if bmp sprite    
    SpriteSize_16x16,    
    SpriteColorFormat_256Color,
    gfx,                  //pointer to the loaded graphics
    -1,                  //sprite rotation data  
    false,               //double the size when rotating?
    false,            //hide the sprite?
    false, false, //vflip, hflip
    false    //apply mosaic
    );
    oamUpdate(&oamMain);
    while(1) {
        swiWaitForVBlank();
    }

    return 0;
}


l'obbiettivo sarebbe di creare 2 quadrati di colori diversi...
 Go to the top of the page
 
+Quote Post
Aurelio
messaggio Monday 14 May 2012 - 18:01
Messaggio #2

DsOs Developer
Gruppo icone

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

Codice Amico:
2664-2091-2256



Prova così

CODICE
#include <nds.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

//---------------------------------------------------------------------------------
int main(void) {
    //---------------------------------------------------------------------------------
    int i = 0;

    videoSetMode(MODE_0_2D);
    videoSetModeSub(MODE_0_2D);

    vramSetBankA(VRAM_A_MAIN_SPRITE);
    vramSetBankD(VRAM_D_SUB_SPRITE);

    oamInit(&oamMain, SpriteMapping_1D_32, false);
    oamInit(&oamSub, SpriteMapping_1D_32, false);

    u16* gfx = oamAllocateGfx(&oamMain, SpriteSize_16x16, SpriteColorFormat_256Color);
    u16* gfxSub = oamAllocateGfx(&oamSub, SpriteSize_16x16, SpriteColorFormat_256Color);

    for(i = 0; i < 16 * 16 / 2; i++)
    {
        gfx[i] = 1 | (1 << 8);
        gfxSub[i] = 2 | (2 << 8);
    }

    SPRITE_PALETTE[1] = RGB15(0,31,0);  //L'indice 0 è bene lasciarlo per eventuali trasparenze
    SPRITE_PALETTE[2] = RGB15(31,0,0);
    oamSet(&oamMain, //main graphics engine context
    0,           //oam index (0 to 127)  
    0, 0,   //x and y pixle location of the sprite
    0,                    //priority, lower renders last (on top)
    0,                      //this is the palette index if multiple palettes or the alpha value if bmp sprite    
    SpriteSize_16x16,    
    SpriteColorFormat_256Color,
    gfx,                  //pointer to the loaded graphics
    -1,                  //sprite rotation data  
    false,               //double the size when rotating?
    false,            //hide the sprite?
    false, false, //vflip, hflip
    false    //apply mosaic
    );
    oamUpdate(&oamMain);
    oamSet(&oamMain, //main graphics engine context
    1,           //oam index (0 to 127)  
    16, 16,   //x and y pixle location of the sprite
    0,                    //priority, lower renders last (on top)
    0,                      //this is the palette index if multiple palettes or the alpha value if bmp sprite    
    SpriteSize_16x16,    
    SpriteColorFormat_256Color,
    gfx,                  //pointer to the loaded graphics
    -1,                  //sprite rotation data  
    false,               //double the size when rotating?
    false,            //hide the sprite?
    false, false, //vflip, hflip
    false    //apply mosaic
    );
    oamUpdate(&oamMain);
    while(1) {
        swiWaitForVBlank();
    }

    return 0;
}



--------------------
Scarica anche tu Cyan!(è gratis! :D)
Blog di programmazione
 Go to the top of the page
 
+Quote Post
nick98t
messaggio Tuesday 15 May 2012 - 15:41
Messaggio #3

Niubbo
Gruppo icone

Gruppo: Membri
Messaggi: 8
Iscritto il: Fri 2 September 2011 - 11:16
Utente Nr.: 55.762
Feedback: 0 (0%)

Codice Amico:
102030



funziona ma comunque i due quadrati me li da dello stesso colore...
il mio obbiettivo erano 2 colori diversi...

CITAZIONE (Aurelio @ Monday 14 May 2012 - 19:01) *
Prova così

CODICE
#include <nds.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

//---------------------------------------------------------------------------------
int main(void) {
    //---------------------------------------------------------------------------------
    int i = 0;

    videoSetMode(MODE_0_2D);
    videoSetModeSub(MODE_0_2D);

    vramSetBankA(VRAM_A_MAIN_SPRITE);
    vramSetBankD(VRAM_D_SUB_SPRITE);

    oamInit(&oamMain, SpriteMapping_1D_32, false);
    oamInit(&oamSub, SpriteMapping_1D_32, false);

    u16* gfx = oamAllocateGfx(&oamMain, SpriteSize_16x16, SpriteColorFormat_256Color);
    u16* gfxSub = oamAllocateGfx(&oamSub, SpriteSize_16x16, SpriteColorFormat_256Color);

    for(i = 0; i < 16 * 16 / 2; i++)
    {
        gfx[i] = 1 | (1 << 8);
        gfxSub[i] = 2 | (2 << 8);
    }

    SPRITE_PALETTE[1] = RGB15(0,31,0);  //L'indice 0 è bene lasciarlo per eventuali trasparenze
    SPRITE_PALETTE[2] = RGB15(31,0,0);
    oamSet(&oamMain, //main graphics engine context
    0,           //oam index (0 to 127)  
    0, 0,   //x and y pixle location of the sprite
    0,                    //priority, lower renders last (on top)
    0,                      //this is the palette index if multiple palettes or the alpha value if bmp sprite    
    SpriteSize_16x16,    
    SpriteColorFormat_256Color,
    gfx,                  //pointer to the loaded graphics
    -1,                  //sprite rotation data  
    false,               //double the size when rotating?
    false,            //hide the sprite?
    false, false, //vflip, hflip
    false    //apply mosaic
    );
    oamUpdate(&oamMain);
    oamSet(&oamMain, //main graphics engine context
    1,           //oam index (0 to 127)  
    16, 16,   //x and y pixle location of the sprite
    0,                    //priority, lower renders last (on top)
    0,                      //this is the palette index if multiple palettes or the alpha value if bmp sprite    
    SpriteSize_16x16,    
    SpriteColorFormat_256Color,
    gfx,                  //pointer to the loaded graphics
    -1,                  //sprite rotation data  
    false,               //double the size when rotating?
    false,            //hide the sprite?
    false, false, //vflip, hflip
    false    //apply mosaic
    );
    oamUpdate(&oamMain);
    while(1) {
        swiWaitForVBlank();
    }

    return 0;
}

 Go to the top of the page
 
+Quote Post
Aurelio
messaggio Tuesday 22 May 2012 - 16:04
Messaggio #4

DsOs Developer
Gruppo icone

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

Codice Amico:
2664-2091-2256



Ho ricontrollato bene il codice. L'errore che hai commesso sta nell'aver creato uno sprite nello schermo inferiore e poi nell'averlo gestito come se fosse nello schermo superiore. Prova a ricontrollare bene il codice, se poi non arrivi ad una soluzione, ti scrivo il codice corretto smile.gif
Nel caso contattami via PM così sicuramente vedo che hai bisogno di aiuto smile.gif


--------------------
Scarica anche tu Cyan!(è gratis! :D)
Blog di programmazione
 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: Wed 24 April 2019- 05:05

.: GBArl.it :. Copyright © 2003-2015, All Rights Reserved.
Loghi, documenti e immagini contenuti in questo Sito appartengono ai rispettivi proprietari,
e sono resi pubblici sotto licenza Creative Commons

Creative Commons License
.::.