#7429 - mandarin - Tue Jun 17, 2003 7:54 pm
Hi all,
I have for the last 2 weeks been busy with my RPG and i came up with this spritedisplay function for my items, but i can't seem to display both sprites on the screen at the same time. Can anyone help?
Heres the code :
u16* OAM = (u16*)0x7000000;
OAMEntry sprites[128];
pRotData rotData = (pRotData)sprites;
void WaitForVsync()
{
while((volatile u16)REG_VCOUNT != 160){}
}
void CopyOAM()
{
u16 loop;
u16* temp;
temp = (u16*)sprites;
for(loop = 0; loop < 128*4; loop++)
{
OAM[loop] = temp[loop];
}
}
void initsprites()
{
u16 loop;
for(loop=0;loop<128;loop++)
{
sprites[loop].attribute0 = 160;
sprites[loop].attribute1 = 240;
}
}
int displayitems(u16 x, u16 y, int no)
{
u16 loop;
u16 num;
u16 attrnum;
attrnum=0;
attrnum=no*8;
num=0;
num=no;
for(loop=0; loop < 128 ; loop++) {
OBJPaletteMem[loop] = itemsPalette[loop];
}
initsprites();
sprites[no].attribute0 = COLOR_256 | SQUARE | y;
sprites[no].attribute1 = SIZE_16 | x;
sprites[no].attribute2 = attrnum;
if (no = 0) {
num=num+128;
for(loop = 0; loop < 128;loop++)
{
OAMData[loop] = itemsData[loop];
}
}
else {
num=(num+1)*128;
for(loop = 128; loop <num;loop++)
{
OAMData[loop] = itemsData[loop-128];
}
}
}
int main()
{
setmode(mode1 | objmap1d | objenable);
displayitems(40,50,1);
displayitems(60,100,2);
while (1) {
WaitForVsync();
CopyOAM();
}
}
I have for the last 2 weeks been busy with my RPG and i came up with this spritedisplay function for my items, but i can't seem to display both sprites on the screen at the same time. Can anyone help?
Heres the code :
u16* OAM = (u16*)0x7000000;
OAMEntry sprites[128];
pRotData rotData = (pRotData)sprites;
void WaitForVsync()
{
while((volatile u16)REG_VCOUNT != 160){}
}
void CopyOAM()
{
u16 loop;
u16* temp;
temp = (u16*)sprites;
for(loop = 0; loop < 128*4; loop++)
{
OAM[loop] = temp[loop];
}
}
void initsprites()
{
u16 loop;
for(loop=0;loop<128;loop++)
{
sprites[loop].attribute0 = 160;
sprites[loop].attribute1 = 240;
}
}
int displayitems(u16 x, u16 y, int no)
{
u16 loop;
u16 num;
u16 attrnum;
attrnum=0;
attrnum=no*8;
num=0;
num=no;
for(loop=0; loop < 128 ; loop++) {
OBJPaletteMem[loop] = itemsPalette[loop];
}
initsprites();
sprites[no].attribute0 = COLOR_256 | SQUARE | y;
sprites[no].attribute1 = SIZE_16 | x;
sprites[no].attribute2 = attrnum;
if (no = 0) {
num=num+128;
for(loop = 0; loop < 128;loop++)
{
OAMData[loop] = itemsData[loop];
}
}
else {
num=(num+1)*128;
for(loop = 128; loop <num;loop++)
{
OAMData[loop] = itemsData[loop-128];
}
}
}
int main()
{
setmode(mode1 | objmap1d | objenable);
displayitems(40,50,1);
displayitems(60,100,2);
while (1) {
WaitForVsync();
CopyOAM();
}
}