What calculator? Are you using an 8X (73, 73E, 80, 81, 82, 83, 83+, 83+S, 84+, 84+S, 85, 86) or 9X (89, 89T, 92, 92 II, 92+, V200)?
The big thing to remember if you want to make games is to use seperate programs. One of the biggest issues with TI-BASIC is that the Lbl command starts at the top of the program and searches, line by line, for the label you're referencing. If you try to make one all-inclusive program, it probably won't be nearly as fast as you need it to be.
There's a lot of material available online on optimization, for instance, consider the for() coomand:
RGMFOREX
:for(a,1,1000)
:a
:end
will run very quickly, but if you have
RGMFOREX
:for(a,1,1000
:a
:end
will go much slower. The one-byte ) will reduce the program size, but will make your program much slower.
Finally, if you want to make graphical games, you almost have to use ASM routines. Many programs exist solely to integrate ASM commands into TI-BASIC programs. The best is probably xLIB; it is an all-inclusive graphic library that integrates graphics into TI-BASIC programs.
xLIB xLIB Revolution is perhaps the best xLIB program.
Personally, I would suggest learning machine language for the Zilog Z-80, the processor running 8X calculators, or for the Motorola 68000. Both are very popular processors, the former being used in the Gameboy and for the Sega Genesis's audio, and the latter being the main processor for the Genesis. Because they are so popular, you can find a lot of resources online for using them: much more than with the proprietary TI-BASIC. Plus, it's a low level language, so it's much faster, and grayscale is much more easily obtainable.
The only major downside to ASM is that you cannot type in ASM programs on your calculator; it must be done on a computer. Technically you could enter in binary (and I have a friend who programs in binary on his TI-82, it's really cool), but 1) soooo many errors are possible, and 2) who really wants to enter in 800,000 1's and 0's into their calculator?