RE: A89: Programming Problem
[Prev][Next][Index][Thread]
RE: A89: Programming Problem
I converted it the old fashion way (HORRORS ;-), by hand. I learned
how to do it 15 years ago when I owned a TI-99/4A, and you had the
CALL CHAR command to be able to change an ASCII char to any shape you
wanted. (DOH, showing my age!)
Nathaniel Gibson
ngibson@ptd.net
>This is probably because you are defining the sprite, "ball" as an Int.
>Int's are 16 bits long not 8, thus leaving 8 blank pixels to the left of it.
>Change it to a char instead like the fallowing.
>
>static unsigned char ball [] = {0x3c, 0x7e, 0xff, 0xff, 0xff,
>0xff, 0x7e, 0x3c};
>
>BTW: What program did you use to convert your sprite into C code?
>I hope this helps.
>-Brady
>
>-----Original Message-----
>From: owner-assembly-89@lists.ticalc.org
>[mailto:owner-assembly-89@lists.ticalc.org]On Behalf Of Nathaniel Gibson
>Sent: Friday, June 09, 2000 10:25 AM
>To: assembly-89@lists.ticalc.org
>Subject: A89: Programming Problem
>
>
>
>I wrote the program below just to see if I could get a ball to bounce
>around the screen. Everything works except for when the ball hits the
>left side of the screen: it looks like it hits 8 pixels too soon. Can
>someone please tell me what I'm doing wrong? I think it has something
>to do with the way Sprite16 processes the sprite, but I'm not sure.
>
>
>Thanks in advance,
>
>Nathaniel Gibson
>ngibson@ptd.net
>
>
>----------------------------CODE--------------------------
>#define SAVE_SCREEN
>
>#include <nostub.h>
>#include <graph.h>
>#include <system.h>
>#include <sprites.h>
>
>int _ti89;
>
>
>int _main()
>{
> static unsigned int ball [] = {0x3c, 0x7e, 0xff, 0xff, 0xff,
>0xff, 0x7e, 0x3c};
> int key, x = 50, y = 50, xChange = 1, yChange = 1;
> void *kbq = kbd_queue ();
> long int j;
>
> ClrScr ();
>
> while (OSdequeue (&key, kbq)) {
>
> if ((x == 0) || (x == 143)) xChange *= -1;
> if ((y == 0) || (y == 91)) yChange *= -1;
>
> x += xChange;
> y += yChange;
>
> Sprite16(x, y, 8, ball, LCD_MEM, SPRT_XOR);
> for ( j = 0; j <= 50000; j++) ;
> Sprite16(x, y, 8, ball, LCD_MEM, SPRT_XOR);
> }
>
> return 0;
>}
References: