Forums Logo

Здравствуйте Гость ( Вход | Регистрация )

[ Каскадный ] · Стандартный · Линейный

> Спрайты, Где и что почитать?

ElVovan
post Воскресенье, 17 июня 2007, 23:34
Отправлено #1


Фанат
***

Группа: Пользователи
Сообщений: 118
Регистрация: 02 мая. 2007
Из: Санкт-Петербург
Пользователь №: 22 080





Что-то в сети негусто информации по спрайтам, ни в одном из туториалов ничего не нашёл, ни в дабл.ко.нз, ни в туториале ЛирыНуны, ни в девсцене.

Может кто может рассказать про программирование спрайтов на ДС или дать ссылку на полезный документ....


--------------------
user posted image
user posted image
user posted image
user posted image
user posted image
user posted image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topicStart Poll
Ответов
ElVovan
post Вторник, 26 июня 2007, 23:41
Отправлено #2


Фанат
***

Группа: Пользователи
Сообщений: 118
Регистрация: 02 мая. 2007
Из: Санкт-Петербург
Пользователь №: 22 080





Аааахх.... Не работает почему-то....
CODE

#include<nds.h>
#include<string.h>

u8 redTile[64] = //Это тайл, которым заполняется экран
{
1,1,1,1,1,1,1,1,
1,2,2,2,2,2,2,1,
1,2,2,2,2,2,2,1,
1,2,2,2,2,2,2,1,
1,2,2,2,2,2,2,1,
1,2,2,2,2,2,2,1,
1,2,2,2,2,2,2,1,
1,1,1,1,1,1,1,1
};

u8 greenTile[64] = //А это теперь спрайт
{
3,3,3,3,3,3,3,3,
3,4,4,4,4,4,4,3,
3,4,5,5,5,5,4,3,
3,4,5,5,5,5,4,3,
3,4,5,5,5,5,4,3,
3,4,5,5,5,5,4,3,
3,4,4,4,4,4,4,3,
3,3,3,3,3,3,3,3
};

int main(){
int id;
SpriteEntry *spriteEntry = new SpriteEntry[128];
SpriteRotation *spriteRotation = (SpriteRotation*)spriteEntry;

// Дальше часть кода не трогаем т.к. заполнение тайлами работает нормально

REG_POWERCNT = POWER_ALL_2D;
DISPLAY_CR = MODE_0_2D | DISPLAY_BG0_ACTIVE;
BG0_CR = BG_32x32 | BG_COLOR_256 | BG_MAP_BASE(0) | BG_TILE_BASE(1);
VRAM_A_CR = VRAM_ENABLE | VRAM_A_MAIN_BG;

BG_PALETTE[1] = RGB15(31,0,0);
BG_PALETTE[2] = RGB15(0,31,0);
SPRITE_PALETTE[3]=RGB15(0,0,31);//Заполняем
SPRITE_PALETTE[4]=RGB15(0,31,31);//палитру
SPRITE_PALETTE[5]=RGB15(31,31,31);//для спрайта

memcpy((void*)BG_TILE_RAM(1), redTile, 64);
memcpy((void*)(BG_TILE_RAM(1)+64), greenTile, 64);

for(int i=0;i<32*32;i++){
 (*(unsigned short*)(void*)(BG_MAP_RAM(0)+i*2))=0;
}
// Вот оно и заполнилось тайлами

id=8; //Идентификатор, насколько я понял он произволен

//Далее идёт начальная инициализация, скопировано с мануала
for (int i = 0; i < 128; i++) {
spriteEntry[i].attribute[0] = ATTR0_DISABLED;
spriteEntry[i].attribute[1] = 0;
spriteEntry[i].attribute[2] = 0;
}
for (int i = 0; i < 32; i++) {
spriteRotation[i].hdx = 256;
spriteRotation[i].hdy = 0;
spriteRotation[i].vdx = 0;
spriteRotation[i].vdy = 256;
}
//Конец инициализации

//Устанавливаем атрибуты спрайта
spriteEntry[0].attribute[0] = ATTR0_COLOR_256 | ATTR0_ROTSCALE | 128;
spriteEntry[0].attribute[1] = ATTR1_ROTDATA(0) | ATTR1_SIZE_64 | 96;
spriteEntry[0].attribute[2] = id;
//Установили

dmaCopy(greenTile, &SPRITE_GFX[id * 16], 64); //Копируем спрайтик

DC_FlushAll();//Обновляем (updateOAM)
dmaCopy(spriteEntry,OAM, 128*sizeof(SpriteEntry));//Обновляем (updateOAM)

while(1);

return(0);
}


--------------------
user posted image
user posted image
user posted image
user posted image
user posted image
user posted image
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Posts in this topic
ElVovan   Спрайты   Воскресенье, 17 июня 2007, 23:34
PokePerevod   http://www.palib.info/wiki/doku.php?id=day4 ...это...   Понедельник, 18 июня 2007, 11:05
ElVovan   Блин, я не использую палиб и не такой крутой прогр...   Понедельник, 18 июня 2007, 11:15
PokePerevod   Вот и здря... :) ...palib как раз для не крутых п...   Понедельник, 18 июня 2007, 11:36
PokePerevod   мне почему-то кажется, что ты забыл "разрешит...   Среда, 27 июня 2007, 11:39
ElVovan   Что-то оно не заработало с этой дополнительной опц...   Четверг, 28 июня 2007, 19:57
PokePerevod   в 4bit'ном режиме (0-15 цветов) цвет под номе...   Пятница, 29 июня 2007, 16:52
Puyo Puyo   Хочешь от всех си`шных библиотек отказаться? Хардк...   Пятница, 29 июня 2007, 13:23
ElVovan   Нет, от библиотек, в которых реализованы ANSI/ISO ...   Суббота, 30 июня 2007, 13:27
PokePerevod   ..\devkitPro\libnds\include...   Суббота, 30 июня 2007, 15:03
ElVovan   Название переменной channel мне ни о чём не говори...   Суббота, 30 июня 2007, 15:32
PokePerevod   число от 0 до 3 ;) читай главу "DMA Transfer...   Суббота, 30 июня 2007, 16:13
ElVovan   Чёрт.... Спрайт заработал, бэкграунд исчез... И с ...   Воскресенье, 01 июля 2007, 23:30
ElVovan   Вот чуток разобрался, с цветом всё ок. А с одновре...   Понедельник, 02 июля 2007, 22:02


Reply to this topicStart new topic
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
 

Упрощённая версия Сейчас: Пт., 11 июля 2025, 09:55
Skin Designed (c) by Rooq.net, All Rights Reserved.