Darl181 was testing Elimination for me, and he said that he has the following problems on his Ti-84+ BE:
"Walking right (XTΘn) doesn't work for me, however walking left does (ALPHA Key). Mode brings up a map and fires when you press it again to hide the map (and that fire consumes 2 ammunition), and 2nd toggles the HUD whilst firing. Pressing apps brings up the light saber as it's supposed to, but only after displaying the map."
In the game, 2nd and MODE are only supposed to fire, nothing else. The map is supposed to be toggled with MATH, and the HUD is supposed to be toggled with x-1. I never have these problems on the Ti-83+ SE, is there something that might be causing these problems on this Ti-84+ BE?
Here's some things that Elimination does. I don't know if it's causing the problem, but it doesn't hurt to list them. Again, I don't have any of these problems on my Ti-83+ SE. ---------------------------------------------
* Elimination switches flash pages using ports * Elimination uses crystal timers (for interrupts) * Elimination uses page $83 for data storage in the $C000-$FFFF area * Elimination uses ports for keypresses
For those of you who would like to test Elimination to see if it's too easy or too hard, you can download this Beta version below.
The purpose of this release of Elimination is for you as the players to test the first five "easy" levels. I want you to pretend you are a beginner and see if these 5 levels are too easy or too hard for beginners. If a level is too easy or too hard, please post suggestions here. This does not apply to secrets, I don't think that secrets should be "easy" to find
If you want to read the "readme / important information", you can click on this spoiler. However, I know that you all know everything and don't need a readme
EDIT3: New version, saves Calibration. Also with more ammunition
Spoiler For Spoiler:
* Read the bottom of this spoiler for the keys to use. * You start with all weapons except for the chaingun, which you have to pick up in level 3. (Read below for weapon descriptions) However, you do need to find ammunition * Remember, you are testing for difficulty. You don't need to try to break things and test for bugs. However, if you come across a bug, please feel free to let me know. * This game does not yet work on the Nspire. Don't try it. * When you reach the level five boss, don't try to get back to the locked door with the "III" on it, the one that you enter to get to the boss. I forgot to have that area sealed off, and that's something I need to fix, but I feel that there will be bugs with other enemies if you "run away" to the main area. * Please DO NOT report these bugs that I know about: --Chaingun displaying an incorrect message when you pick it up --Enemies and dead bodies appear in incorrect locations when a saved game is loaded. This bug does not hamper gameplay, but if I were to try to fix it, saved games would be much too large --Text in the menu appears gibberish. I know that I have to fix this, but just remember that the first item is "New Game," and the last item is "Quit." --Enemies in a line die to the same shot. This requires too much effort to fix, so in the manual I'll use the excuse that the player has "piercing" weapons. Besides, it adds more strategy --Menu cursor displays black boxes when it moves up/down, and the text "Results" appears at the bottom --Scoreboard at the end of a level appears over the game instead of a clean screen
Controls -------------------------------
2nd / Mode -- Fire, Select Option from Main Menu Alpha / XTThetaN -- Walk sideways GRAPH -- Finish Calibrating Enter -- Button you use to skip most screens DEL -- Open a door or flip a switch on APPS -- Bring up the lightsaber. The lightsaber does 10 damage, and needs no ammo. You must be close to an enemy to use it. Y = -- Use the handgun. The handgun does 3 damage. It's semiautomatic, but it will fire as fast as you push the 2nd or mode buttons. It does very little, if any, splash damage. WINDOW -- Use the shotgun. The shotgun does 12 damage with splash. It needs time to reload. ZOOM -- Use the chaingun. Every time you hold the trigger, the chaingun requires time to warm up, so the first 8 bullets do only 2 damage each. After that, bullets will do 3 damage each until the trigger is released. The chaingun does some splash damage. TRACE -- Use the rocket launcher. Rockets do 40 damage with splash. If you're too close to a wall, an object or an enemy, you'll get hurt, up to a maximum of 20 damage. GRAPH (In Game)-- Use the Annihilator, the plasma gun. Plasma cells do 1 damage each, but they will damage anything you can see on screen, and sometimes enemies right on the edge of the screen. MATH -- Toggle the map on/off. You can move while the map is on. X-1 -- Toggle the HUD on/off. + -- Skip a level. With this button, it will take about 2 seconds before the game is ready to move to the next level. You MUST have the HUD on for this to work (a bug that will be fixed later) 1 -- Save your game. Make sure you don't run applications that could erase page 3, such as Crabcake games or thepenguin77's chess game 4 -- Load your game. You must be in-game to load a game. If you exit after saving, select "New Game", then press 4 to load your previous game
I'm a big Chex Quest fan, and I noticed that someone had worked on converting DOOM 2 to use Chex Quest graphics. It's no longer available for download, or at least I don't know where to get it. Does anyone have a copy that I can download, or does anyone know where I can find it?
If you're programming in ASM, you probably know that the Ti-83+ screen is slow, and requires time between each byte of data that you output to it. If you draw to the screen too fast, your game will have issues and go berserk.
There are two ways to take care of this. One way is to read port $10 after you output a byte to the screen. If bit 7 of port $10 is equal to 1, the LCD is busy, and it's dangerous to put a byte to the screen. If bit 7 equals 0, you can output another byte to the screen.
The other method is to know the maximum amount of time it takes the screen to be ready, and then you can wait that long after displaying one byte of data before you output the next byte. This method is faster than the first one, but it's not as safe (read on!)
When the Ti-83+ first came out, people knew that it takes a maximum of 65 T-States for the screen to be ready after a game outputs a byte. (~165 on the Ti-83+ SE and the Ti-84+) Many games, therefore, used the second method for timing because it would produce faster games. However, many of the new calculators have screens that take longer than 65 / 165 T-states to display information. So the old games created for old calculators display graphics too fast to work with the new screens.
If you want to program a game that is guranteed to work on all Ti-83+ calculators--then, now and will be--you should use the first method. It may be slower, but it's fool-proof. You can always try to time your game with these new screens, but it doesn't mean that your game will work well with future calculators.
I thought it'd be cool to create a melting effect for Elimination similar to the one used in DOOM. I'm willing to create my own, but has one been created already?
For Elimination, let's say I have a playerX and a playerY, and an EnemyX and an EnemyY. I'm wanting to do something similar to a Bresenham line, but to do that I need to know the slope between the two locations, of the player and the enemy. I'm assuming a LUT is my best bet, where the LUT will have values for rise and run. That is, go up/down this many times, and left/right this many times.
How do I go about implementing this? What I need to know is given (PlayerX, PlayerY) and (EnemyX, EnemyY), what do I need to do to find the correct value in the LUT? I want my LUT to have no more than 64 sets of rise over run.
For a college final in composition, I wanted to write music for the game Supreme Commander, an RTS game. One of the playable races is called the Cybran, a race of cyborgs. So I created music for two moments. One song is for when you start the game. (Growth and Anticipation -- the Cybran prepare for the upcoming battle) Then the other song is the first battle, the first encounter. I was inspired by Starcraft for "Growth and Anticipation", and I was inspired by Donkey Kong Country 3 for "The First Battle" (despite the fact that the guitar sounds like Starcraft)
You can also download the scores, but I must warn you, my grades for the class came from actual recordings rather than the quality of the printed music. Also, the scores aren't fully accurate, because some of the sounds and instruments were done manually during recording/sound editing rather than from the composition software I was using. The score for Growth and Anticipation comes in 2 parts, and Part II of Growth and Anticipation is what happens onward from the moment you hear the distorted guitar interrupt the men's choir.
Lua has become quite a valuable and popular programming language for the Nspire series of calculators. Since Lua is used for a lot of games, it would be awful if a promising game could only work on some OSes of the Nspire and not others. As such, we are thankful to Critor for the following topic: http://ourl.ca/14528
Basically, if your Lua game includes only functions that TI documents and gives instructions for, your game is almost 100% guranteed to work on future Operating Systems of the Nspire. However, there are some functions that TI did not mention, hidden functions that were discovered through the work of others. Sometimes these functions are changed or removed in future versions of the Nspire, and your game will not work on those particular calculators.
What we're saying is if you would like to create a Nspire game that everyone can use, be careful using undocumented instructions. There's no promise that the functions will remain. You should be safe sticking with the functions that TI talks about.
On another note, here's an official TI operating system that critor found, but TI hasn't made available for download:
This is a list of features I need to add/test before I release a new screenshot for Elimination. After every screenshot of Elimination, I will update this list with new tasks I need to complete, and I will strike out tasks that I have finished. It will be a great way for you to see what I'm currently working on, as well as what I have completed. What you see most people put in their signature, I will put here, because I am terrible about updating my signature.
Although this topic is locked and will rarely show up in "new posts," I will never forget to update it, so be sure to check from day to day if you're curious about my progress with Elimination.
To do before next play-through screenshot:
* Create Level 18 * Implement Batteries * Improve Enemy Pathing --Keep an enemy from moving off screen by itself --Keep an enemy from getting too close so that it won't disappear behind the player --Slow down some enemies --Keep enemies from disappearing into walls once and for all * Implement "Case of Cylinders" powerup * Implement Hard Difficulty * Add collision to objects and enemies
Next Multiplayer Steps:
* Create Test Map * Create Multiplayer Menu System
In light of the number of new projects that have been coming in, including Axe and Lua, we've added some new subforums for people to place their projects in. This will hopefully clear any confusion, as well as keep new projects organized by language.
If you have a new project idea or contribution, you may place it in one of these six boards, just look under "Other Calc-Related Projects and Ideas."
Over time, we will be moving some of the newest existing projects into their respective categories. If you can't find the project you were working on, it's likely you will find it in one of the six new boards.
1. Is it true that when declaring variables, compiled C++ code will run faster if all variables are, for example, declared as char as opposed to all variables being declared as double? 2. Registers in the processor get used and erased quite frequently--meaning permanent storage is not possible. How can one use the register keyword to place a variable inside a register?
I know that Builderboy made a decent raycaster, but since the caster made used of stairs, etc. it was too processor-intensive to including floor and ceiling textures. If the area were entirely flat, is it possible to cast floors, walls and ceilings at the same time? I read about how after a wall is drawn, the start-end coordinates of a ray of wall can be used to draw one ray of ceiling/floor
In the game Gemini (and thus Elimination as well), every enemy has an X position and a Y position. I'm pretty sure that the X position and Y position are governed by the left side of the enemy when you are facing it. In other words, if an enemy is at X = 1200 and Y = 1300 in one possible situation, this is the left of the enemy, and the middle of the enemy will be at approximately X = 1215 and Y = 1315 in some cases.
Also, every enemy position takes two bytes. If the X position is stored in HL, H will contain the tile from a row of 32 tiles, and L will contain the location to the nearest 1/256 of that particular tile. If the Y position is stored in HL, H will contain the tile from a COLUMN of 32 tiles, and so on.
Collision detection in Gemini checks the X and Y position to see if the tile an enemy is on is occupied by a wall. Register B contains the tile number out of the 32 tiles in a row, and register C contains the tile number of 32 tiles in a column. If C * 32 + B points to a tile that is occupied by a wall, the enemy is told not to move to that direction, and a new direction is calculated.
So here's my problem. Registers B and C will, like I said at the top, pertain to the LEFT of the sprite. So the left side of the sprite never, ever runs into a wall. However, the right side often does. Considering the code below, what's a good way to fix that?
EDIT: Part of my problem is the enemy always faces toward you, no matter at what angle you are facing in the map.
ldhl, (object) ldde, 14 addhl, de lda, (hl);This is how many units the enemy will move in the current direction ora jrnz, objectsEnemyMove
dechl lda, r srla srla ld(hl), a;Store a direction, from 1 - 32 inchl lda, r srla srla ld(hl), a;Store how many units the enemy will move in the direction
objectsEnemyMove:
dec(hl) dechl lda, (hl)
; Get trigs ldhl, movtbl ldb, 0 ldc, a addhl, bc lde, (hl) ldc, 8 addhl, bc ldd, (hl)
; Speed depends on enemy ldhl, (object) lda, (hl) and%00111111 ora jrz, objectsHandgunSpeed deca jrz, objectsShotgunSpeed deca jrz, objectsChaingunSpeed