What this program is supposed to do is that the sprite changes upon every keypress until CLEAR is pressed.

But apparently the offset calculation is wrong because the display after the first sprite looks jumbled.

I think the problem is in the Sprite16 part, but I can't pinpoint what went wrong.

Help? Smile


Code:
#include <tigcclib.h>

void _main(void)
{
    //Sprite Data for the dark plane
    unsigned short test1[] = {0b0000011111100000,0b0000111111110000,0b0001111111111000,0b0001110110111000,0b0001101001011000,0b0001101001011000,0b0001100000011000,0b0001111001111000,0b0001111111111000,0b0001111111111000,0b0011111111111100,0b0010110000110100,0b0001010110101000,0b0000010110100000,0b0000011111100000,0b0000001111000000,0b0000011111100000,0b0000111111110000,0b0001111111111000,0b0001110110111000,0b0001101001011000,0b0001101001011000,0b0001100000011000,0b0001111001111000,0b0001111111111000,0b0001111111111000,0b0001011111111000,0b0000101001101000,0b0000001101010000,0b0000001101000000,0b0000000111000000,0b0000000010000000,0b0000011111100000,0b0000111111110000,0b0001111111111000,0b0001110110111000,0b0001101001011000,0b0001101001011000,0b0001100000011000,0b0001111001111000,0b0001111111111000,0b0001111111111000,0b0011111111111100,0b0010110000110100,0b0001010110101000,0b0000010110100000,0b0000011111100000,0b0000001111000000,0b0000011111100000,0b0000111111110000,0b0001111111111000,0b0001110110111000,0b0001101001011000,0b0001101001011000,0b0001100000011000,0b0001111001111000,0b0001111111111000,0b0001111111111000,0b0001111111101000,0b0001011001010000,0b0000101011000000,0b0000001011000000,0b0000001110000000,0b0000000100000000};
   
    //Sprite Data for the light plane
    unsigned short test2[] = {0b0000011111100000,0b0000100000010000,0b0001000000001000,0b0000100000010000,0b0000101001010000,0b0000101001010000,0b0000000000000000,0b0000011001100000,0b0000100110010000,0b0001000000001000,0b0010010000100100,0b0010111111110100,0b0001011111101000,0b0000011111100000,0b0000010110100000,0b0000001111000000,0b0000011111100000,0b0000100000010000,0b0001000000001000,0b0000100000010000,0b0000101001010000,0b0000101001010000,0b0000000000000000,0b0000011001100000,0b0000100110010000,0b0001000000010000,0b0001010000001000,0b0000101111101000,0b0000001111010000,0b0000001111000000,0b0000000101000000,0b0000000010000000,0b0000011111100000,0b0000100000010000,0b0001000000001000,0b0000100000010000,0b0000101001010000,0b0000101001010000,0b0000000000000000,0b0000011001100000,0b0000100110010000,0b0001000000001000,0b0010010000100100,0b0010111111110100,0b0001011111101000,0b0000011111100000,0b0000010110100000,0b0000001111000000,0b0000011111100000,0b0000100000010000,0b0001000000001000,0b0000100000010000,0b0000101001010000,0b0000101001010000,0b0000000000000000,0b0000011001100000,0b0000100110010000,0b0000100000001000,0b0001000000101000,0b0001011111010000,0b0000101111000000,0b0000001111000000,0b0000001010000000,0b0000000100000000};

      //Pointers
    short *s1, *s2;
      s1 = &test1[0];
      s2 = &test2[0];
   
    //Init
    short key;
    int offset = 0;
    ClrScr();
   
    //GS Check   
    if (!GrayOn()) return;
   
    //Loop
    do {
      Sprite16(0,0,16,offset * 32 + s2,GrayGetPlane (LIGHT_PLANE),SPRT_AND);
      Sprite16(0,0,16,offset * 32 + s1,GrayGetPlane (DARK_PLANE),SPRT_AND);
      
      //If any keys other than CLEAR is pressed, changes sprite offset.
      
      key=ngetchx();
      offset++;
      if (offset == 4) offset=0;
      
      } while (key != 263);
      
      //Turns off Grayscale
    GrayOff();
}
Well, looking at http://tigcc.ticalc.org/doc/sprites.html#Sprite8, I see a few possible issues. First of all, there's no need to do that complicated pointer butchering that you do (namely turning s1 and s2 into crazytown duplicates of test1 and test2). Laughing Secondly, you're XORing sprites by default, so remember that you need to XOR the same sprite in the same place a second time to make it disappear. You're overlapping another copy of the sprite 1 pixel over, so you'll get interesting results. Also, if your sprites are 16 pixels wide, then your pointer arithmetic should be offset * 16 + s2, because you're multiplying by 16 shorts, not 16 bytes.
Oh. I thought it was bytes -.-

Also, thanks! It fixed up a lot!

Fixed code:

Code:
#include <tigcclib.h>

void _main(void)
{
    //Sprite Data for the dark plane
    unsigned short test1[] = {0b0000011111100000,0b0000111111110000,0b0001111111111000,0b0001110110111000,0b0001101001011000,0b0001101001011000,0b0001100000011000,0b0001111001111000,0b0001111111111000,0b0001111111111000,0b0011111111111100,0b0010110000110100,0b0001010110101000,0b0000010110100000,0b0000011111100000,0b0000001111000000,0b0000011111100000,0b0000111111110000,0b0001111111111000,0b0001110110111000,0b0001101001011000,0b0001101001011000,0b0001100000011000,0b0001111001111000,0b0001111111111000,0b0001111111111000,0b0001011111111000,0b0000101001101000,0b0000001101010000,0b0000001101000000,0b0000000111000000,0b0000000010000000,0b0000011111100000,0b0000111111110000,0b0001111111111000,0b0001110110111000,0b0001101001011000,0b0001101001011000,0b0001100000011000,0b0001111001111000,0b0001111111111000,0b0001111111111000,0b0011111111111100,0b0010110000110100,0b0001010110101000,0b0000010110100000,0b0000011111100000,0b0000001111000000,0b0000011111100000,0b0000111111110000,0b0001111111111000,0b0001110110111000,0b0001101001011000,0b0001101001011000,0b0001100000011000,0b0001111001111000,0b0001111111111000,0b0001111111111000,0b0001111111101000,0b0001011001010000,0b0000101011000000,0b0000001011000000,0b0000001110000000,0b0000000100000000};
   
    //Sprite Data for the light plane
    unsigned short test2[] = {0b0000011111100000,0b0000100000010000,0b0001000000001000,0b0000100000010000,0b0000101001010000,0b0000101001010000,0b0000000000000000,0b0000011001100000,0b0000100110010000,0b0001000000001000,0b0010010000100100,0b0010111111110100,0b0001011111101000,0b0000011111100000,0b0000010110100000,0b0000001111000000,0b0000011111100000,0b0000100000010000,0b0001000000001000,0b0000100000010000,0b0000101001010000,0b0000101001010000,0b0000000000000000,0b0000011001100000,0b0000100110010000,0b0001000000010000,0b0001010000001000,0b0000101111101000,0b0000001111010000,0b0000001111000000,0b0000000101000000,0b0000000010000000,0b0000011111100000,0b0000100000010000,0b0001000000001000,0b0000100000010000,0b0000101001010000,0b0000101001010000,0b0000000000000000,0b0000011001100000,0b0000100110010000,0b0001000000001000,0b0010010000100100,0b0010111111110100,0b0001011111101000,0b0000011111100000,0b0000010110100000,0b0000001111000000,0b0000011111100000,0b0000100000010000,0b0001000000001000,0b0000100000010000,0b0000101001010000,0b0000101001010000,0b0000000000000000,0b0000011001100000,0b0000100110010000,0b0000100000001000,0b0001000000101000,0b0001011111010000,0b0000101111000000,0b0000001111000000,0b0000001010000000,0b0000000100000000};
   
    //Init
    short key;
    int offset = 0, temp;
    ClrScr();
   
    //GS Check   
    if (!GrayOn()) return;
   
    //Loop
    do {
      Sprite16(0,0,16,offset * 16 + test2,GrayGetPlane (LIGHT_PLANE),SPRT_XOR);
      Sprite16(0,0,16,offset * 16 + test1,GrayGetPlane (DARK_PLANE),SPRT_XOR);
      
      //If any keys other than CLEAR is pressed, changes sprite offset.
      
      key=ngetchx();
      
      temp = offset;
      offset++;
      if (offset == 4) offset=0;
      
      Sprite16(0,0,16,temp * 16 + test2,GrayGetPlane (LIGHT_PLANE),SPRT_XOR);
      Sprite16(0,0,16,temp * 16 + test1,GrayGetPlane (DARK_PLANE),SPRT_XOR);      
      
      } while (key != 263);
      
      //Turns off Grayscale
    GrayOff();
}
Great, so does it work now? Or are there still glitches?
It works so far.
The only minor thing would be the slow-down at the beginning, but I think I'll eventually learn why it causes a slowdown as I continue to learn it.
Too lazy to create another thread, so I'll just post my questions here.

I have a header file, called sprlib.h and a c file called main.c.


Code:
// Header File
// Created 11/10/2013; 6:59:39 PM
// Stores the Sprite


unsigned long ts1[] = {
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00003C30,
    0x00006630,0x00007878,0x00007C78,0x00009E7C,
    0x0000CC8C,0x00007DDE,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x80000000,0x00000000,0x00000000,
    0x00000000,0x0000000F,0x00000C0F,0x00003FEF,
    0x6C00FFFF,0xFC07FFFF,0xF007FFFF,0x3007FFFF,
    0x9007FFCF,0x00017A7E,0xC007807E,0xC007007E,
    0x0007007E,0x7807027E,0x1807007E,0x0007007E,
    0x00071FFF,0x000FFFFF,0x000FFFFF,0x000FFFFF,
    0x000FFFFF,0x001FFFFF,0x063FFFFF,0x0FFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xDFFFFFFF,0xDFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xC0C00000,
    0x0000000E,0x001FEFFF,0xFFC7FFFF,0xFFFFF117,
    0xDEBFFFFF,0xFFFFFFFF,0xFFFFFC00,0xFFFFFFFE,
    0xFFFFFFFF,0xFFFFC07E,0xFFFFE000,0xFFFFFC00,
    0xFFFFF000,0xFFF00000,0xF4000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0xFF000000,0x80000000,0xE0000000,0xF0000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00003C20,
    0x00006430,0x00007838,0x00007C58,0x00001E7C,
    0x00004C8C,0x000079DE,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000007,0x00000000,0x00001F06,
    0x000079FC,0xC807F637,0x5007327E,0x10077700,
    0x00054000,0x00000004,0x80000000,0x40000000,
    0x00060000,0x00040000,0x00060000,0x00060028,
    0x00060079,0x0007FFF9,0x0007E6FE,0x0007833F,
    0x000713FC,0x000F3FFE,0x000FFFFF,0x071FFBFF,
    0x3FFFFBFF,0xFFFFFFFF,0xFFFFF3FF,0xFFFFD07F,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xDFDFD7FF,
    0x5FCFFFFF,0xDFEFFFFF,0xCBFFFFFF,0x69FFFFFF,
    0x7FFFFFFF,0x00001FFF,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0xB8000000,
    0xFF000000,0xF8000000,0x19000000,0xF0000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000
  };
 
unsigned long ts2[] = {
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0xF1E7183F,
    0x70E6186D,0x60643C0C,0x607C3C0C,0x60383E0C,
    0x7238460C,0x7E10EF1E,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000007,0x00000067,0x0000FFDF,
    0xFF83FFFF,0xFF8FFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xFFFFFFEF,0xFFFFFF8E,0xFFDF04FF,0x3FD8007E,
    0x07F8007E,0x07F8007E,0x07F820FE,0x07F820FE,
    0x07F824FE,0x0FF8007E,0x07F13FFF,0x7FFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFF8007F,0xFFF520FF,
    0xFFF9007F,0xFFF900FF,0xFFF900FF,0xFFFD6DFF,
    0xFFFD6DFF,0xFFFD6DFF,0xFFF920FF,0xFFFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFF7FFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0x1FFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFC8C7F7F,0xCFFF8801,
    0xE0000000,0xFF000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0xF1E7103F,
    0x60E6186C,0x60641C0C,0x60782C0C,0x60383E0C,
    0x6230460C,0x7E10EF1E,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000003,0x00003804,
    0x6101C3BE,0x80065CBF,0x00F84CEE,0x07D8848F,
    0x00F85204,0x9FD80004,0x0000000C,0x0000000E,
    0x0080002E,0x0080000C,0x0080000E,0x0080002C,
    0x0080000C,0x0080000C,0x0180003F,0x00C5FF4F,
    0xF1909B4E,0x0088C00D,0x01C0002E,0x4580000E,
    0x0180002E,0x0180003F,0x9180007F,0x0180007E,
    0x018921FE,0x09A921FF,0x0180003F,0x1180001F,
    0xFFFFFFFF,0xFFFFFFFF,0xFF0FFFFF,0x9F1FFFE7,
    0x1F7FFFC7,0x1FFFFFC7,0x1FFFFFDF,0x1FFFFFFF,
    0x9FFFFFC7,0xFFFFFFFF,0x00000C13,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000
  };
 
unsigned long ts3[] = {
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0xB8F9C700,
    0xB99CF200,0x398CFE00,0x3B8EFE00,0x398CDE00,
    0x39CCCE00,0x38F9C200,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x000000FF,0x0000FFFF,0x00FFFFFF,
    0x07FFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xFFFFFF7F,0xFFFFFFC3,0xFFFE007F,0xFF03FF7F,
    0x4FFFEF0F,0xFFEE0307,0xBF86031F,0x1F86271F,
    0x1F8E271F,0x1FCE271F,0x1F8E2703,0x1F86030F,
    0x1F87FFFB,0x1FFFFFFF,0xFFFFFFFB,0xFFFFFFFB,
    0xFFFFFFFB,0xFFFFFFFB,0xFFFFFF5F,0xFFCF275B,
    0xFFCFEF5F,0xFFDFAF5A,0xFFCFAF5B,0xFFDFAF5F,
    0xFFFFAFDB,0xFFFFAF07,0xFF86036F,0xFFFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xFFFF00FF,0xFFFFFFFF,0xFFFE43DF,0xB4000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x3871C700,
    0xB99CE200,0x398CFA00,0x398CFE00,0x398C9E00,
    0x39CC8600,0x3870C200,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x0000001E,0x00001CFE,0x0009FF7A,
    0x03FFFE5F,0x7EE2DE7E,0xF807FE6E,0x0FFFFE7E,
    0xFF7FFE02,0xFFFF0002,0xBE000003,0x2E000001,
    0x0C020203,0x0C000003,0x08000203,0x0C000203,
    0x08040203,0x08000003,0x08000203,0x08000003,
    0x0E000279,0x0AFFFE5B,0xF89B7679,0xF8F3FE53,
    0x3EDF9E7A,0xFEFBFA72,0xBE860202,0x0E040202,
    0x0E042202,0x0E002200,0x1E040200,0x5E0C2202,
    0xFF4C2602,0xFF040202,0xFF040200,0xFEFFFE7A,
    0xFEDFEE7A,0xFEFFFE7A,0xFFFFFE7A,0xFFFFFE7A,
    0xFFFFFE7A,0xFFFFFE7A,0xFFFFFE7A,0xFFFFFE7E,
    0xFFFFFE7E,0xFFFFFE78,0xFFFFFFF8,0x005FFE78,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000
  };
unsigned long ts4[] = {
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00006000,0x00006000,
    0xE017A000,0xA7FF20FD,0xFFFFBFFF,0x7FFF9FFF,
    0x3DFFFFFF,0x3FFFFFFF,0x7FFFFFFF,0xFFFFFFFF,
    0xF817FFFF,0xF9F7FFFF,0x3803FF92,0xFFFFFCFF,
    0xFFFFFFFF,0xFFFFFFDB,0xFFFFFF03,0xFFB7FF13,
    0xFC47FF4B,0xF843FF9B,0xFFFFFF83,0xFF4BFFDB,
    0xFA4DFF03,0xFB4BFF07,0xFB49FFFF,0xF249FFFF,
    0xFA49FFFF,0xFA49FDFF,0xFA49FFFF,0xFA49FFFF,
    0xF8039FFF,0x3FFFFFCB,0xFFFFFF4B,0xFFFFFF03,
    0xBFFF5F03,0xB0015FCB,0xBFFEDFCB,0xBFFF5FCB,
    0xBFFF5FCF,0xFFFEFF03,0xFFFE5FFF,0xFFFEFFFF,
    0xFFFE5FFF,0xF0405FFF,0xF75CFFFF,0xF75CDFFF,
    0xF75CFFFF,0xF75CFFFF,0xF0445FFF,0xF04CFFFF,
    0xF34DFFFF,0xF801FFFF,0xFFB6FFFF,0xFFFEFFFF,
    0xF7FDFFFF,0xF8DFFFFF,0xC003D1FF,0x0000000F,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000380,0x00000007,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x015F0019,0x1FA01FFF,0x00001FFF,
    0x00021FBB,0x01FF3FFF,0x1FEFBFFF,0x3C031FFF,
    0x38031FFF,0x38031FF8,0x30031800,0x30031800,
    0x3FFFF990,0xBFFFF802,0xFF3FFC02,0xF803F802,
    0xF801FC02,0xF001FC02,0xF001F802,0xF001FC02,
    0xF001F802,0xF001FC02,0xF001F9FF,0xF001F9FF,
    0xF001FDFF,0xF001F9FF,0xF001FDFF,0xF001D9FF,
    0x30001983,0x30371C02,0x33E01C02,0x00001C02,
    0x00001C02,0x00001802,0x80005C02,0x3B1E1C02,
    0x0C405C02,0x80405C02,0x00401D4F,0x80405DFF,
    0x80005DFF,0x20005DFF,0x80445DFF,0x20401DFF,
    0x80405C4F,0x00445C0F,0x80001C5F,0x80405EFF,
    0x00007FFF,0x40007FFF,0x40007FFF,0x00007FFF,
    0x00007FFF,0x000003FF,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000
  };
unsigned long ts5[] = {
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x0000FF00,0x008FFF00,
    0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,
    0xFFFFFF00,0xFFFFFF00,0xFFFFFF80,0xFFFFFF80,
    0xFFFE0F80,0xF825FF80,0x0FFFFF80,0xFFFCDF80,
    0xD9B41F80,0x0934DF80,0x49BCDF80,0x49B4D780,
    0xC9B4DF80,0x49B4DF80,0xC9B4D780,0xC9301F80,
    0x003BFF80,0xFFFFF780,0xFFFFFF80,0xFFFFF780,
    0xFFFFF780,0xFFFFFF80,0xFFFFF780,0xFFFFF7C0,
    0xFDFEFFC0,0xCCB0FFC0,0x4830DFC0,0x40BEEFC0,
    0x48FFFFC0,0xCFFFFFE0,0xEFFFFFE0,0xFFFFFFFC,
    0xFFFFFFFC,0xFFFFFFFC,0xFFFFFFFD,0xFFFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0x007FFFFF,0x000007E7,0x003FFFFF,0x0001FFFF,
    0x0000FFFF,0x0000FFFF,0x0000003F,0x000FFF6F,
    0x00017FFF,0x60C00400,0x6080FE00,0x6070FF7F,
    0x00F9FFFF,0x0000FFFF,0x00010003,0x1FFFFE07,
    0x03FDFFF3,0xFFFDFFFF,0x207FFFFF,0x637FFFFF,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00001F00,0x000FFE00,
    0x1FFFFF00,0xFFFFFB00,0xFFF4FF00,0xFFFFFF00,
    0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0xFFDF4780,
    0xFC000780,0x00000780,0x005EC780,0xD9000780,
    0x00200780,0x00200780,0x00200780,0x00200780,
    0x00200780,0x00200780,0x00200680,0x00200780,
    0x00200780,0x01FFE780,0xFFFFE780,0xFFFFE780,
    0xFFFFE380,0xFFFFE780,0xFFFFF380,0xFFFE8780,
    0x00000780,0x001003C0,0x001007C0,0x001007C0,
    0x001503C0,0x00F783C0,0x4EFFF7C0,0x6DFFF3E0,
    0x5FFFFFE0,0x7FFFFFF0,0xFFFFFFE0,0xFFFFFFE3,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
    0xFFFFFFFF,0xFFFFFFFF,0x007FFFFF,0x000003FF,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000,
    0x00000000,0x00000000,0x00000000,0x00000000
  };



    //DARK_PLANE

unsigned short test1[] = {
   //Front1 (Stand Still)
    0x07E0,0x0810,0x1008,0x0810,
    0x0A50,0x0A50,0x0000,0x0660,
    0x0990,0x1008,0x2424,0x2C34,
    0x15A8,0x05A0,0x05A0,0x03C0,
   //Front 2
   0x07E0,0x0810,0x1008,0x0810,
    0x0A50,0x0A50,0x0000,0x0660,
    0x0990,0x1010,0x1408,0x0A68,
    0x0350,0x0340,0x0140,0x0080,
   //Front3
    0x07E0,0x0810,0x1008,0x0810,
    0x0A50,0x0A50,0x0000,0x0660,
    0x0990,0x1008,0x2424,0x2C34,
    0x15A8,0x05A0,0x05A0,0x03C0,
   //Front4
   0x07E0,0x0810,0x1008,0x0810,
    0x0A50,0x0A50,0x0000,0x0660,
    0x0990,0x0808,0x1028,0x1650,
    0x0AC0,0x02C0,0x0280,0x0100,
   //Left1
   0x03C0,0x0420,0x0810,0x0800,
    0x0A80,0x0A40,0x0800,0x0460,
    0x03A0,0x0220,0x0360,0x0360,
    0x0340,0x01C0,0x0140,0x01C0,
   //Left2
    0x0000,0x03C0,0x0420,0x0810,
    0x0800,0x0A80,0x0A40,0x0800,
    0x0460,0x03A0,0x0220,0x0250,
    0x0350,0x0520,0x0590,0x0670,
   //Left3
   0x03C0,0x0420,0x0810,0x0800,
    0x0A80,0x0A40,0x0800,0x0460,
    0x03A0,0x0220,0x0360,0x0360,
    0x0340,0x01C0,0x0140,0x01C0,
   //Left4
    0x0000,0x03C0,0x0420,0x0810,
    0x0800,0x0A80,0x0A40,0x0800,
    0x0460,0x03A0,0x02A0,0x0320,
    0x0360,0x04A0,0x0590,0x0670,
   //Right1
   0x03C0,0x0420,0x0810,0x0010,
    0x0150,0x0250,0x0010,0x0620,
    0x05C0,0x0440,0x06C0,0x06C0,
    0x02C0,0x0380,0x0280,0x0380,
   //Right2
    0x0000,0x03C0,0x0420,0x0810,
    0x0010,0x0150,0x0250,0x0010,
    0x0620,0x05C0,0x0440,0x0A40,
    0x0AC0,0x04A0,0x09A0,0x0E60,
   //Right3
   0x03C0,0x0420,0x0810,0x0010,
    0x0150,0x0250,0x0010,0x0620,
    0x05C0,0x0440,0x06C0,0x06C0,
    0x02C0,0x0380,0x0280,0x0380,
   //Right4
    0x0000,0x03C0,0x0420,0x0810,
    0x0010,0x0150,0x0250,0x0010,
    0x0620,0x05C0,0x0540,0x04C0,
    0x06C0,0x0520,0x09A0,0x0E60,
   //Back1
    0x07E0,0x0810,0x1008,0x0000,
    0x0000,0x0000,0x0000,0x0000,
    0x1008,0x1818,0x27E4,0x2C34,
    0x15A8,0x05A0,0x05A0,0x03C0,
   //Back2
    0x07E0,0x0810,0x1008,0x0000,
    0x0000,0x0000,0x0000,0x0000,
    0x1008,0x1818,0x17E8,0x0A68,
    0x0350,0x0340,0x0140,0x0080,
   //Back3
    0x07E0,0x0810,0x1008,0x0000,
    0x0000,0x0000,0x0000,0x0000,
    0x1008,0x1818,0x27E4,0x2C34,
    0x15A8,0x05A0,0x05A0,0x03C0,
   //Back4
    0x07E0,0x0810,0x1008,0x0000,
    0x0000,0x0000,0x0000,0x0000,
    0x1008,0x1818,0x17E8,0x1650,
    0x0AC0,0x02C0,0x0280,0x0100
};

//LIGHT PLANE

unsigned short test2[] = {
   //Front1 (Stand Still)
    0x07E0,0x0FF0,0x1FF8,0x1DB8,
    0x1A58,0x1A58,0x1818,0x1E78,
    0x1FF8,0x1FF8,0x3FFC,0x2C34,
    0x15A8,0x05A0,0x07E0,0x03C0,
   //Front 2
   0x07E0,0x0FF0,0x1FF8,0x1DB8,
    0x1A58,0x1A58,0x1818,0x1E78,
    0x1FF8,0x1FF8,0x17F8,0x0A68,
    0x0350,0x0340,0x01C0,0x0080,
   //Front3
    0x07E0,0x0FF0,0x1FF8,0x1DB8,
    0x1A58,0x1A58,0x1818,0x1E78,
    0x1FF8,0x1FF8,0x3FFC,0x2C34,
    0x15A8,0x05A0,0x07E0,0x03C0,
   //Front4
   0x07E0,0x0FF0,0x1FF8,0x1DB8,
    0x1A58,0x1A58,0x1818,0x1E78,
    0x1FF8,0x1FF8,0x1FE8,0x1650,
    0x0AC0,0x02C0,0x0380,0x0100,
   //Left1
   0x03C0,0x07E0,0x0FF0,0x0FF0,
    0x0AF0,0x0A70,0x0830,0x0470,
    0x03F0,0x03F0,0x03F0,0x03E0,
    0x0340,0x01C0,0x01C0,0x01C0,
   //Left2
    0x0000,0x03C0,0x07E0,0x0FF0,
    0x0FF0,0x0AF0,0x0A70,0x0830,
    0x0470,0x03F0,0x03F0,0x03F0,
    0x0350,0x0520,0x07B0,0x0670,
   //Left3
   0x03C0,0x07E0,0x0FF0,0x0FF0,
    0x0AF0,0x0A70,0x0830,0x0470,
    0x03F0,0x03F0,0x03F0,0x03E0,
    0x0340,0x01C0,0x01C0,0x01C0,
   //Left4
    0x0000,0x03C0,0x07E0,0x0FF0,
    0x0FF0,0x0AF0,0x0A70,0x0830,
    0x0470,0x03F0,0x03F0,0x03E0,
    0x0360,0x04A0,0x07B0,0x0670,
   //Right1
    0x03C0,0x07E0,0x0FF0,0x0FF0,
    0x0F50,0x0E50,0x0C10,0x0E20,
    0x0FC0,0x0FC0,0x0FC0,0x07C0,
    0x02C0,0x0380,0x0380,0x0380,
   //Right2
    0x0000,0x03C0,0x07E0,0x0FF0,
    0x0FF0,0x0F50,0x0E50,0x0C10,
    0x0E20,0x0FC0,0x0FC0,0x0FC0,
    0x0AC0,0x04A0,0x0DE0,0x0E60,
   //Right3
    0x03C0,0x07E0,0x0FF0,0x0FF0,
    0x0F50,0x0E50,0x0C10,0x0E20,
    0x0FC0,0x0FC0,0x0FC0,0x07C0,
    0x02C0,0x0380,0x0380,0x0380,
   //Right4
    0x0000,0x03C0,0x07E0,0x0FF0,
    0x0FF0,0x0F50,0x0E50,0x0C10,
    0x0E20,0x0FC0,0x0FC0,0x07C0,
    0x06C0,0x0520,0x0DE0,0x0E60,
   //Back1
    0x07E0,0x0FF0,0x1FF8,0x1FF8,
    0x1FF8,0x1FF8,0x1FF8,0x1FF8,
    0x1FF8,0x1FF8,0x3FFC,0x2C34,
    0x15A8,0x05A0,0x07E0,0x03C0,
   //Back2
    0x07E0,0x0FF0,0x1FF8,0x1FF8,
    0x1FF8,0x1FF8,0x1FF8,0x1FF8,
    0x1FF8,0x1FF8,0x17F8,0x0A68,
    0x0350,0x0340,0x01C0,0x0080,
   //Back3
    0x07E0,0x0FF0,0x1FF8,0x1FF8,
    0x1FF8,0x1FF8,0x1FF8,0x1FF8,
    0x1FF8,0x1FF8,0x3FFC,0x2C34,
    0x15A8,0x05A0,0x07E0,0x03C0,
   //Back4
    0x07E0,0x0FF0,0x1FF8,0x1FF8,
    0x1FF8,0x1FF8,0x1FF8,0x1FF8,
    0x1FF8,0x1FF8,0x1FE8,0x1650,
    0x0AC0,0x02C0,0x0380,0x0100
};



Code:
#include <tigcclib.h>
#include <sprlib.h>

void DS (int x, int y, int offset);

 
void _main(void)
{   
    if (!GrayOn ()) return;
    ClrScr();
    Sprite32 (0,0,100,ts1,GrayGetPlane (DARK_PLANE),SPRT_XOR);
    Sprite32 (0,0,100, &ts1[100],GrayGetPlane (LIGHT_PLANE),SPRT_XOR);
    Sprite32 (32,0,100,ts2,GrayGetPlane (DARK_PLANE),SPRT_XOR);
    Sprite32 (32,0,100, &ts2[100],GrayGetPlane (LIGHT_PLANE),SPRT_XOR);
    Sprite32 (64,0,100,ts3,GrayGetPlane (DARK_PLANE),SPRT_XOR);
    Sprite32 (64,0,100, &ts3[100],GrayGetPlane (LIGHT_PLANE),SPRT_XOR);
    Sprite32 (96,0,100,ts4,GrayGetPlane (DARK_PLANE),SPRT_XOR);
    Sprite32 (96,0,100, &ts4[100],GrayGetPlane (LIGHT_PLANE),SPRT_XOR);
    Sprite32 (128,0,100,ts5,GrayGetPlane (DARK_PLANE),SPRT_XOR);
    Sprite32 (128,0,100, &ts5[100],GrayGetPlane (LIGHT_PLANE),SPRT_XOR);
    DS (30,30,0);
    ngetchx();
    GrayOff();
}

void DS (int x, int y, int offset)
{
      Sprite16(x,y,16,offset * 16 + test2,GrayGetPlane (LIGHT_PLANE),SPRT_XOR);
      Sprite16(x,y,16,offset * 16 + test1,GrayGetPlane (DARK_PLANE),SPRT_XOR);
}


The problem is that it recognizes test1 (short) just fine, but throws an "undeclared" error for all the ts#s (long).

What did I do wrong?

EDIT: For clarification, all the long variables has 200 elements to it, first 100 being the layer 1 and the latter 100 being the layer 2.
Those looks more like unsigned ints than unsigned longs to me; are TIGCC ints not 32 bits? At any rate, are you sure that TIGCC has a datatype called long?
Can you give us the exact error output from the compiler?

Right off the bat I see '#include <sprlib.h>' which it should probably be '#include "sprlib.h"', but that's likely not an issue if it's finding test1 and test2.
KermMartian wrote:
Those looks more like unsigned ints than unsigned longs to me; are TIGCC ints not 32 bits? At any rate, are you sure that TIGCC has a datatype called long?

I'm sure that TIGCC has a long datatype because Sprite32 requires one.

merthsoft wrote:
Can you give us the exact error output from the compiler?

Right off the bat I see '#include <sprlib.h>' which it should probably be '#include "sprlib.h"', but that's likely not an issue if it's finding test1 and test2.

Quote:
'ts1' undeclared (first use in this function)

is what the compiler gives me. Same with ts2~ts5.

Also what's the difference between using <> and "" to include headers?
yeongJIN_COOL wrote:
Also what's the difference between using <> and "" to include headers?
< > is for standard headers; it searches your include path for the headers in question. " " is for your own header files; it searches your current directory.
KermMartian wrote:
yeongJIN_COOL wrote:
Also what's the difference between using <> and "" to include headers?
< > is for standard headers; it searches your include path for the headers in question. " " is for your own header files; it searches your current directory.

Ah, I see.
I put the custom header to the include path when I made it (I thought I had to Razz) so I guess it's not a problem for me then. Smile
On TI-68k/AMS, int is indeed short, i.e. 16 bits. There's an option for making int equivalent to long, but doing so loses interoperability with functions of the printf family.
For those 32-pixel 1 bpp sprites, either use "UL" suffix, or better, use the standard UINT32_C macro from stdint.h Smile

Oh, I forgot: the code snippets posted above don't use AND followed by OR, but in case you want to do that, just use the RPLC mode of the sprite routines, because it's faster and smaller.
Oh, also I forgot to mention this.
C/Ping the whole picture data to the main.c works fine.
BTW, don't store sprite data in header files, unless a single file includes said header(s). Otherwise, the data will usually be duplicated across compile units, which is a huge waste of space. Platform-specific linker-based constant merging should mitigate the problem, but that's non-portable.
The proper, portable way to define such sprite data is to use "extern" definitions in the header, and a single C source file containing the sprite data.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement