Citation de: ichigobankai le 03 Novembre 2014 à 20:31:16Désolé, j'avais zappé ton message, alors mes réponses :
donc en questions :
- Comment faire pour ajouter de l'asm directement dans le code en C ? (me sera necessaire pour placer des JMP particuliers)
- J'ai réussi tant bien que mal a convertir un spc pour l'intégrer, mais ca n'a été ni simple, ni intuitif... et impossible de dépasser les 32ko (il faut peut etre découper en bank de 32ko ?)
Quel est la manip (ou plutot son) pour faire un truc "propre" ?
- je n'ai pas très bien compris comment était géré les "layers" (si ils s'appellent comme ca sur snes)
car j'aurais voulu un plan en 256 couleurs (background), lui pas de souci avec les exemple dans la lib et un autre en 16 couleurs pour ecrire du texte + curseur (certainement en sprites) (au 1er plan pour ces derniers), j'ai pris le mode 3 qui semble fonctionner avec 2 plans...
- pour finir mais c'est moins "grave", est-il possible de faire ca directement en Hirom, car par défaut j'ai vu que c'était du Lorom.
//Oh yes is big array, but is only for tests, in the future i go reduce this :)
unsigned short sprTiles16px[300] = {0,2,4,6,8,10,12,14,32,34,36,38,40,42,44,46,64,66,68,70,72,74,76,78,96,98,100,102,104,106,108,110,128,130,132,134,136,138,140,142,160,162,164,166,168,170,172,174,192,194,196,198,200,202,204,206,224,226,228,230,232,234,236,238,256,258,260,262,264,266,268,270,288,290,292,294,296,298,300,302,320,322,324,326,328,330,332,334,352,354,356,358,360,362,364,366,384,386,388,390,392,394,396,398,416,418,420,422,424,426,428,430,448,450,452,454,456,458,460,462,480,482,484,486,488,490,492,494,512,514,516,518,520,522,524,526,544,546,548,550,552,554,556,558,576,578,580,582,584,586,588,590,608,610,612,614,616,618,620,622,640,642,644,646,648,650,652,654,672,674,676,678,680,682,684,686,704,706,708,710,712,714,716,718,736,738,740,742,744,746,748,750,768,770,772,774,776,778,780,782,800,802,804,806,808,810,812,814,832,834,836,838,840,842,844,846,864,866,868,870,872,874,876,878,896,898,900,902,904,906,908,910,928,930,932,934,936,938,940,942,960,962,964,966,968,970,972,974,992,994,996,998,1000,1002,1004,1006,1024,1026,1028,1030,1032,1034,1036,1038,1056,1058,1060,1062,1064,1066,1068,1070,1088,1090,1092,1094,1096,1098,1100,1102,1120,1122,1124,1126,1128,1130,1132,1134,1152,1154,1156,1158,1160,1162,1164,1166,1184,1186,1188,1190};
//Custom oamInitGfxAttr, my sprites having 16X32 (see Val 6 in table Sprite sizes http://www.portabledev.com/wiki/doku.php?id=sprites_en)
REG_OBSEL = (6<<5) | (0x0000 >> 13);
//Copy the heros graphics for vram with dma, this point using 0x0000 to 0xC000
WaitForVBlank(); dmaCopyVram(&tileSourceHeros, 0x0000, &tileSourceHerosEnd-&tileSourceHeros);
//Copy the heros palette for vram with dma
dmaCopyCGram(&paletteEntryHeros, (128+0*16), 32);
//Copy the civis graphics for vram with dma, this point using 0xC000 to 0x2000
WaitForVBlank(); dmaCopyVram(&tileSourceCivis, 0xC000 , &tileSourceCivisEnd - &tileSourceCivis);
//Copy the civis palette for vram with dma
dmaCopyCGram(&paletteEntryCivis, (128+1*16), 32);
//Copy the objs graphics for vram with dma, this point using 0x2000 to 0x3000
WaitForVBlank(); dmaCopyVram(&tileSourceObjs, 0x2000, &tileSourceObjsEnd - &tileSourceObjs);
//Copy the objs palette for vram with dma
dmaCopyCGram(&paletteEntryObjs, (128+2*16), 32);
/*Table offset
Offset Sprite Addres Real
0 Hero 0x0000
16 Friend1 0x0400
32 Friend2 0x0800
48 Civil1 0x0C00
64 Civil2 0x1000
80 Civil3 0x1400
96 Civil4 0x1800
112 Civil5 0x1C00
128 OBJ1 0x2000 //Dont working
144 OBJ2 0x2400 //Dont working
160 OBJ3 0x2800 //Dont working
176 OBJ4 0x2C00 //Dont working
*/
//0x0000
oamSetEx(0, OBJ_SMALL, OBJ_SHOW);
oamSet(0, hero.x, hero.y, 0, 0, 0, sprTiles16px[0], 0);
//0x0400
oamSetEx(4, OBJ_SMALL, OBJ_SHOW);
oamSet(4, friend1.x, friend1.y, 0, 0, 0, sprTiles16px[16], 0);
//0x0800
oamSetEx(8, OBJ_SMALL, OBJ_SHOW);
oamSet(8, friend2.x, friend2.y, 0, 0, 0, sprTiles16px[32], 0);
//0x0C00
oamSetEx(12, OBJ_SMALL, OBJ_SHOW);
oamSet(12, civil1.x, civil1.y, 0, 0, 0, sprTiles16px[48], 1);
//0x1000
oamSetEx(16, OBJ_SMALL, OBJ_SHOW);
oamSet(16, civil2.x, civil2.y, 0, 0, 0, sprTiles16px[64], 1);
//0x1400
oamSetEx(20, OBJ_SMALL, OBJ_SHOW);
oamSet(20, civil3.x, civil3.y, 0, 0, 0, sprTiles16px[80], 1);
//0x1800
oamSetEx(24, OBJ_SMALL, OBJ_SHOW);
oamSet(24, civil4.x, civil4.y, 0, 0, 0, sprTiles16px[96], 1);
//0x1C00
oamSetEx(28, OBJ_SMALL, OBJ_SHOW);
oamSet(28, civil5.x, civil5.y, 0, 0, 0, sprTiles16px[112], 1);
//0x2000 - Dont working
oamSetEx(32, OBJ_SMALL, OBJ_SHOW);
oamSet(32, obj1.x, obj1.y, 0, 0, 0, sprTiles16px[128], 2);
//0x2400 - Dont working
oamSetEx(36, OBJ_SMALL, OBJ_SHOW);
oamSet(36, obj2.x, obj2.y, 0, 0, 0, sprTiles16px[144], 2);
//0x2800 - Dont working
oamSetEx(40, OBJ_SMALL, OBJ_SHOW);
oamSet(40, obj3.x, obj3.y, 0, 0, 0, sprTiles16px[160], 2);
//0x2C00 - Dont working
oamSetEx(44, OBJ_SMALL, OBJ_SHOW);
oamSet(44, obj4.x, obj4.y, 0, 0, 0, sprTiles16px[176], 2);
void oamInitGfxAttr(0x0000, OBJ_SIZE8);