Volume 1, Number 3 December 2005    

Table of Contents

BASIC Elite Resurrection.....1
Tanks 89.....2
Anti-Piracy, Respect, and Its Relationship to the TI-Programming Community.....3
The End of If.....4
Understanding expr(.....5

The BASIC Elite Resurrection

By Kerm Martian
In this past summer of 2005, a new user named Jon Pezzino or JPez emailed me after having tried my TI-83/+ shell Doors CS, pointing out several bugs in a tone indicitive of doubt it would actually get addressed. When I did indeed fix the issues in question the next day, he was so surprised that he joined Cemetech to see what else was going on, and soon racked up a sizeable postcount along with gaining a good measure of respect on the forum. The idea of the BASIC Elite first came after I started a rant on the forum lamenting the declining quality of new submissions at ticalc.org, and apparently I touched a chord, for people vehemently responded their agreement. Jon came up with the idea of an independent group of TI-BASIC graphing calculator programmers, devoted to quality of programs and personal integrity, one whose logo could mean the difference between a flame and a download for a member's program. I agreed it was an excellent idea, and together we formed the organization to be known as The BASIC Elite, overseen by Cemetech and hosted at http://www.cemetech.net/projects/basicelite . Almost immediately programmers from the board and elsewhere began to apply for membership in the Elite or 1337 as it is affectionally called by its members. As they were approved by JPez and myself, they too gained the responsibility of allowing or denying new members applying the the Elite. After several members who we felt showed great promise but were not yet at the level of a full 1337 member attempted to join, we came up with the idea of the BASIC Elite apprentice class, a group of BASIC Elite partial members who could post in the BASIC Elite forum and were allowed to display an Apprentice logo on their website if applicable, but were not yet full members with voting privileges. We also began to write and publish newsletters containing information about the Elite, reviews of exceptional programs in TI-BASIC for any TI graphing calculator model, and tutorials and tips for both beginner and advanced programmers. After the first two issues were published and work on the third was begun, however, the articles for this third issue were unfortunately lost when the site's old host was hacked. The newsletter and thus most of the Elite's public functions lapsed for a while, though some other BASIC Elite-sanctioned projects and events continued. In particular, several of us created a BASIC Elite Guide to BASIC Programming with tips for efficient, well-coded programs. I also made SourceCoder v1.0, a web service for parsing and displaying readable, pastable BBCode and HTML from any TI .8** file, which was subsequently featured at ticalc.org and described elsewhere in this newsletter. Since the summer, The BASIC Elite has gotten a good deal of press directly and via its members' projects, and several recent developments have greatly increased the pressure to reintroduce this groundbreaking group. Firstly, there have been several new, disintegrous members of the community releasing code lifted verbatim from other programs and slightly modified to try to veil their acts, claiming credit for others' hard work. Secondly, the overall quality of released projects has plummetted even as new programmers join ticalc.org at phenomenal rates. Elite members have been proactively working with other important websites and community figures to address these problems, and we feel resurrecting the Elite is one important step towards such a goal. Now that The BASIC Elite has returned, it is once again open to new members and apprentices, and we will be releasing new issues of the newsletter each month.

Tanks 89

By TI-Freak8x
Graphics: 7/10 - Simple, but well enough made to play the game
Controls: 8/10 - Easy enough to pick up on, but read the readme!
Gameplay: 9/10 - The game is fast, and it follows fairly well with scorched earth.
Replay value: 9/10 - With random levels, ability to have varying wind speed/direction, this game is always fun to play.

File Link: http://tifreakware.calcgames.org/ainfo/79.htm


The author (Andy Dufilie) did a fairly good job with bringing a 'Scorched Earth" clone to the 89, using BASIC. The game generates random terrains, so you will never play in the same area twice. There is an option at the beginning that allows you to have a set speed and direction for wind, or allow it to change speeds and direction at every turn, which adds to the difficulty of the game. You are allowed 5 different type of missiles, depending on how much money you have earned. They don't have any names, but they do have different explosion radii.

The AI in the game can be somewhat challenging, though I have come across a couple times where I have no idea what it is thinking. The more you blast it, the more it wastes its money on shields until it has no money left. Also, once it figues out the angles and power neccessary to hit you, it will hit you with everything it can produce.

The wind speed and direction does interfere with the missle, if you are firing into it, and don't have enough power, it will come back at you. If you start taking damage, you will begin to lose the ability to move the turret, and you will begin to loose maximum power available to shoot missles, which can hurt you just as badly.

It is an overall good game, and I found no bugs while playing it.

Anti-Piracy, Respect, and Its Relationship to the TI-Programming Community

By Alex10819
*** Short Disclaimer: This article was written by Alex10819, and the views expressed within may not reflect the views of the site hosting this article. Should anything within this article offend you in any way, shape, or form, don't be mad at them...

In any online community, conflicts exist. These conflicts are often detrimental to the mood of the community, and often spring from a number of sources. Lately, two major conflict sources have been worrying me: Software Piracy, and a serious lack of respect towards others. I used to play a MMORPG on the Internet, but I was driven out of the community by the swarms of new players, who had absolutely no respect for others. I quit the community about 2 weeks before I entered the TI community, and I was quite pleased by how well most people get along inside the TI community. Most TI programmers are extremely intelligent, and are capable of showing respect to others. The community forces out those who do not adhere to these standards (Hays games), and generally takes care of itself, though it requires help. There have been several cases of piracy lately, where someones program was directly taken, renamed, and released onto an archive site. I will use a program by TI-Freakware for my example. TI-Freakware authored a program called AOD (Age of Darkness), and it became extremely popular on Calcgames.org. However, recently it has coe to light that someone has copied this program, renaming it and giving absolutely no credit to the original author. Blatantly taking a program, whether it is in TI-BASIC, ASM, C, or any other programming language, is unethical, and shows a lack of intelligence on the part of the copier. If you want to use a program someone else has made inside your own, there are ways to do so, and everyone will be much happier. If you want to use the TI-City (yes, I'm using TI-Freakware as an example again) battle engine, you should contact the author of the program, ask permission, and make them a co-author when you upload to an archive site. You should also make sure that you give them due credit inside the README file. The other thing that has been irritating me lately is a blatant lack of respect. The TI community gets along fairly well, as long as you program ASM without a glitch. Lately, Kévin Ouellet (Author of Reuben Quest, a fully grayscale RPG written in TI-BASIC) has been coming under fire for programming in BASIC, when many of the people criticizing him could never come close to touching what he has done. If you have a problem with a program someone has written, it is not necessary to email them and say “j00 <|2@$|-|3|> /\/\'/ <@|_< !!!!!!!!! 1 P0|\|23|2Z j00!”. Instead, act like a normal human being and fill out an actual bug report. If you don't know what one looks like, you can find an example at http://archives.madpage.com/bug.html , and don't try to speak 1337 when you do so. Believe it or not, 1337 is not the universal language of Homo Sapiens... no matter how fun it may be to type. (but thats another rant)... Also, think before you contact a programmer. As a programmer, I don't have time to read “Your program stinks! It doesn't really emulate grayscale, it just flashes lines on and off to make different shades of light black!”, and respond to it in an intellectual manner. No programmer wants to waste time explaining something so stupid, not even a new programmer, who might censored under the stress of idiots emailing pointless things to him/her. The point is, Programmers don't have the time to deal with idiots, unless that idiot has a good point. While I understand you might not know how to link your calculator to your computer, don't email a programmer about it. Yeah, the programmer will reply, but the answer will either: A) be a sarcastic comment B) be a link to the TI-Connect website C) be a link to a site that has a good FAQ (like calcgames.org). So, the moral of the story is simple: Think before you contact a programmer. I have created a list of Do's and Dont's for your entertainment.

Do contact a programmer if:
1. You have a good idea
2. You found a bug
3. You have an intelligent reason
4. You need help, and can speak clearly

Do not contact a programmer if:
1. You have an urge to Spam
2. The programmer's product crashed your calc, and you cant be reasonable about it
3. You didn't bother to read the README file

The last thing I want to mention is the over usage of the term “noob” (in all its forms). The term originally applied to someone who was new to a community, but now seems to apply to everyone who isn't the person saying it. I consider myself a noob in the TI-Programming Community, mainly because I have only been programming TI-BASIC for about 6 months now. However, I have heard several people called noobs for reasons I cannot begin to comprehend. How can someone be a noob for trying to stop a flame war? How can someone be a noob for sticking up for a online friend? How can someone be a noob because they are better at TI-BASIC than many others? How can someone be a noob because they had a program pirated? How can someone be a noob for discovering a bug in a buggy program? I have seen people called noobs for all of these stupid reasons, and then some, and I want to know: When will it stop? Am I a noob because I know what GUI stands for? I think we need to tone down on the usage of the word noob, and do it soon. I'm sick of seeing good programmers shot down by people who are jealous. Recently the Omnimaga Forums were taken offline, and the Owner was threatening to remove all Omnimaga files because people were calling him a noob. While I do feel this was an over reaction, I don't believe that calling the creator of one of the coolest RPG's ever a “noob” shows intelligence. In fact, it just makes the community look bad.

If you don't agree with anything I have said in this short article, you can email me. If you agree with anything I have said in this article, please email me! You can contact me on Calcgames.org, Cemetech, alex10819 productions, calchaven, Tifreakware, TI-Programming Union, and several other calc related sites. Tell me what you think!

Accompanying Interviews:
Kerm Martian, author of DoorsCS, 2 time victim of direct software piracy http://www.alex10819.com/kerm.htm
Jc, Calchaven.tk Admin, author of Bobgame. Calcgames.org regular poster http://www.alex10819.com/jc.html

The End of "If"

By TI-Freak8x
Boolean logic, as most BASIC TI programmers understand it, is comprised of an If statement, the 'compared variables' (whether simple (If A=1) or complex (If A=1 and (T>C^D*S/Q+P or G
Since boolean logic is simply "true" or "False" (or 1 or 0 in the calculators case), we can use this to our advantage when writing complex looking code, when in fact, it is so simple, that you will wonder why you didn't figure it out yourself.

The simplest example I can provide would be a 'restricter' routine that restricts the amount of items a character can have in a game, like restricting the amount of potions in an RPG. Z will be where the amount will be stored, and we want it to be restricted to 5. Please make sure you delete variable Z, or store 0 to it, so you understand this next part.

Type the following onto the homescreen of your calculator:


Now press ENTER repeatedly. It should count up til 5, then just keep displaying 5 afterwards. This is because this is what the calculator sees while Z<5:


But once Z=5, the calculator begins to see:


That is why it stops incrementing. This can also be used in more complex routines, like getkey codes. Say we are storing A and B as row and column for homescreen character movement, and K will be the getkey variable.


In this instance, (looking at the top one, the bottom is basically the same) we are using the addition and subtraction instead of and or or commands. This also takes into account that you cannot subtract a negative, which is why the second part works. If you notice, A-((( that there are three starting parenthesis, the first is because we have to keep the main engine in one spot, this keeps the calculator from getting confused. The second starts the check to see if it will be able to go up. The confusing thing is the ((K=25)+(A>1)) part. Since these were wrapped in parenthesis as well, the calculator will see the = and > and 'understand' that a conditional is being tested, so will 'know' that + means that both most be true, otherwise, it is a no go.

That may not be the best way to describe that function, but that basically is how it works. As long as you know how to make the code work in the game, who cares what the calc sees, right?

Understanding expr(

By TI-Freak8x
expr( can be a very powerful command, if used properly. Simply put, it takes whatever is in a string, and executes it. Sadly, it does not execute program, which would be really nice...

But one interesting feature that I have found is lists. With a lil ingenuity, you can make it look up a list of lists that are stored in a string, and execute a particular bit of it, just by manipulating a couple of variables!

Create 4 lists, LBLAC, LAPPL, LAPES, and LDONE. Give them all the dimension of 20, and fill in with random numbers. Now when you are done with that, create a program, call it anything you like, and put in the following:


Now run the program, and see how it worked. :-) You can of course change the value of X, and see how it effects how it runs. If you want to access the first list, you will need to start with -3, and work up in increments of 4. The above will only work for lists that are all the same name size. Trying to mix sizes will give a syntax error.

Play around with it a bit, you will eventually figure out some other cool ways to put this in a game.
© 2005 The BASIC Elite and Cemetech. All rights reserved.