Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - ACagliano

Pages: 1 2 3 [4] 5 6 ... 8
46
TI Z80 / Star Trek reloaded (bad pun on the 'ld' command)
« on: May 11, 2011, 06:57:05 pm »
I have restarted the Star Trek project, in full assembly. I'm going to link to information about the project, rather than retype it all.

The project page that I am hosting contains information about the project. It is at  http://clrhome.co.cc/projects/startrek .

The current source is posted at http://pastebin.com/R3KwMYPQ. Any comments/corrections/suggestions are welcome.

47
The Axe Parser Project / Using OP variable
« on: May 05, 2011, 10:10:37 am »
In my study of z80, I saw that there are floating point variables (Op1,Op2,Op3...). Where are these located in Axe? Is that the float command? And can someone post an example of how to use it?

48
Art / Sprite Request
« on: April 30, 2011, 12:27:23 pm »
I am currently testing myself in assembly by undertaking a complete remake of my Pokemon Battle Simulator in full assembly. Thus, I would like some assistance with sprites. Would anyone be so kind as to post some sprites for my game. I don't need all of them, just a few known ones like Pikachu, Bulbasaur, Squirtle, Haunter, ect.

49
Axe / Is it Possible?
« on: April 01, 2011, 10:03:45 am »
Is it possible to make the calculator run part of an app (like a specific subroutine) when it turns on? Is it possible to do this in Axe? Assembly? How?

50
TI Z80 / Axe Tutorial
« on: March 17, 2011, 06:37:42 pm »
I am working on a tutorial for Axe, with focus on game design, just like my TI-Basic one, which is now up on my website. Please read the sections of the tutorial as I post them below. Correct any technical mistakes, factual inaccuracies, and propose any add-ins. Thanks to the community.



Table of Contents


Chapter 1: Introduction to Axe Parser

   1.1: Using Axe
   1.2: Setup of an Axe program
   1.3: Memory Structure, with Respect to Axe

Chapter 2: Using Memory in Axe

   1.1: Variables
   1.2: Name Strings
   1.3: SafeRam areas
   1.4: Pointers
   1.5: Data Storage and Manipulation
   1.6: Archive memory and files
   1.7: Commands that deal with memory

Chapter 2: Axe, the Basics

   2.1: Text Display
   2.2: Drawing
   2.3: Using Jumps and Subroutines
   2.4: Control Blocks
   2.5: Mathematical Operations
   2.6: Commands for Basic Axe

Chapter 3: Constructing an Interface

   3.1: Saving Data
   3.2: Sprites
   3.3: Tiles and Tilemaps
   3.4: Collision Detect
   3.5: Key press/Input Detection
   3.6: Screen v. Buffer v. Back buffer
   3.7: Commands for Interface design

Chapter 4: Advanced Game Mechanics

   3.1: Real-time programming
   3.2: Artificial Intelligence
   3.3: Interrupts
   3.4: I/O linking in Axe
   3.5: CALCnet2.2 as a linking protocol



1.1:  Using Axe


Axe is a programming platform designed by Quigibo . It is currently in late beta stages. It is a Flash Application, compatible with the z80 line of calculators (TI-83+/84+). It allows you to compile your programs into z80 executables, much like true assembly is. Axe has a command syntax similar to TI-Basic, but it is much more powerful. Have a look at the Commands list, provided on the tutorials page, to see specific instructions that Axe currently supports.

What sets Axe aside from its programming counterparts? It’s ease of use, and its power, for a language so easy to use. This tutorial will delve into using Axe to design games. Then, it will explore using CALCnet2.2, the robust calculator network designed by Kerm Martian, to achieve multiplayer linking.




1.2: Setup of an Axe Program


Every Axe program must have a name, at it is written using the program editor provided by the TI-OS. It is important to give this program, called your “source program”, a name that is different than the name you want your executable to have. Let us first deal with the setup of an Axe program.

Every Axe source program needs a header that tells the Parser what to name the output file. This is done using the comment denoting character, “.”.

PROGRAM:AXSRC
.SOURCE

This causes the Parser to output the executable to a program named SOURCE. If you wish, you can include a description after the name. For example:

PROGRAM:AXSRC
.SOURCE an example program

This has the same result as the program above, but the second one has a small description. Henceforth, the Parser will completely ignore lines of code preceded by a period (.).

Axe Parser also has the capacity to compile programs for certain shells by including a specific header: DoorsCS, MirageOS, and ION. This may be set in the Options menu. If you choose not to compile for a shell, you may simply set the Parser to the “No Shell” option. Finally, the Parser gives one more option. For those who wish to be daring, the Parser can compile your code into an application. This code is very hackish, and is therefore inefficient. However, Quigibo has assured me that this compiling mechanism is stable, meaning it does not endanger sensitive parts of your calculator. However, this option should be avoided if it can be.

Programming in Axe has elements of both TI-Basic programming and assembly programming. Axe provides the ease of use of TI-Basic-like commands, making the language easy to learn and easier to code in. However, data in Axe functions like data in assembly. This means you must be familiar with the usage of pointers, referencing memory by bytes, and sometimes by bits. It means that you can do math with variables, because they are, in fact, simply numbers. All of this will be discussed later.



1.3: Memory Structure, with Respect to Axe


In Axe, none of the variables you regularly program with exist. All that exists is your code. You use the variables as pointers to data in your code, and thenceforth use those variables to reference the data. You have several variable sets available to you in Axe. These are listed below, by how they are named on calculator.

GDB0-9
Pic0-9
Str0-9

Furthermore, Axe supports longer names for these variables. You may annex up to two letters (A-Z) to the end of any one of the above to form a variable name. So, this means that all of the following are examples of valid names:

GDB0
GDB1A
GDB3CA
Pic4
Pic6N
Pic9AZ
Str6
Str9A
Str2VA

While these names look a lot like TI-Basic variables, they are not. They are simply pointers, used by the programmer to reference large segments of data. We will discuss the importance and usage of them later.

The memory of your calculator consists of a series of bits, utilizing binary numerals. There are eight (8) bits in one (1) byte of memory. Similarly, there are two (2) hexadecimal numerals in one (1) byte of memory. Using Axe, you will need to know how to use and manipulate data in hexadecimal, especially if you are making tile-maps for an RPG. However, most of Axe’s commands accept input in standard decimal and Axe does provide conversionary tokens for input in hex and binary.

There are a few key things you need to know, going forward. You must read and write data directly to bytes either one byte at a time or two bytes at a time. This is because, in assembly, there are two types of numbers. There are one-byte numbers (0-255) and there are two-byte numbers (0-65536). These are positive numbers. If you underflow the stack of numbers, you move to the top and if you overflow it, you move to the bottom. There are ways to use negative numbers, and Axe makes it fairly trivial to do so. This will be discussed later.

Now, remember, as it is with assembly, there is a non-trivial difference between addresses and data. Each byte in memory has an address, starting at zero and continuing until the device runs out of memory. The offset from zero of a byte is its address. Thus, a byte at offset 200 would have an address of 200. This is not the same as the value of byte 200. Axe makes the difference easy to see. Let us assume that you have already stored the number 7 to the byte at 200. Well, you must store the value to a pointer.

200→C
C            ;   returns the address of the byte, 200.
{C}        ;   returns the value of the byte, 7.

In Axe, the curly brackets indicate that we are reading or writing data, not getting an address. They are very important.



Current Footnotes:

1  Kevin Horowitz, aka Quigibo is the designer of Axe Parser, and its programming platform. This tutorial borrows some material from the Official Documentation.

51
Axe / Establish Link Connection
« on: March 08, 2011, 06:34:57 pm »
Can someone give me some Axe code that causes a calculator to check for another calculator, if it finds one, it jumps to one label, if it doesn't it jumps to another. This must work even if the two calcs run the same code at the same time, because, in the final product, they will. You can then assign master/slave, but this is not a necessity.

Thanks.

52
Other Calculators / Information Request
« on: March 08, 2011, 12:06:49 pm »
I need information for an editorial I am preparing on TI. It is broad and unbiased and every dubious statement I make will need a citation. I need some information from you guys.

1. How many calculators did Brandon Wilson brick? What was he doing that caused this? And over what time period did this occur?
(If BrandonW answers here, we are good. If someone else answers, I will need a link to where he says this.)


*I'll be adding more questions as this thing comes to fruition.

53
Axe / GreyScale Splash Screen
« on: February 17, 2011, 10:33:04 am »
I have failed to produce a good splash screen for Zelda. I still do not understand how to utilize the greyscale in Axe. I would like a splash screen that says "Legend of Zelda", "Ganon's Rage", and potentially has an image of the triforce. I don't care how many layers of greyscale it is. I would rather it be done by someone who has succeeded in using Axe grayscale before, but if someone teaches me how to do it, that would be cool too.

54
General Calculator Help / AI Programmer Needed
« on: February 17, 2011, 09:00:16 am »
I have no experience with designing a good AI system, yet my Zelda game requires one. If someone would be willing to design such a routine, that would be great. In the AI, enemies must simply move toward the player and attempt to collide with you for damage. The enemies must rebound to the next impassable tile if they hit you or you hit them. If there is an item in the room some of them should move to protect the item, but this is optional. There are a few specifications as to what tiles an enemy may pass over and what tiles and enemy must move around. The game is coded in Axe, so an Axe routine would be great, but if someone would do it as assembly, I could use it as an inline assembly routine. Thanks in advance. I am making quick progress on the movement engine and tile-related event scripts.

55
TI Z80 / Zelda News
« on: January 25, 2011, 01:53:30 pm »
I am hard at work on my Zelda game. I need some help from u guys, tho. I need a routine for the calc that can convert data into RLE. And I need another routine that converts RLE back into standard data formatting. Those, while preferred in Axe, can be written in inline assembly as well. I tried to do one myself, but it failed. I'll try to post it when I can. The last request, is simply for some assistance, collaboration, on Zelda's AI routines.


In other news:

I just taped together four pieces of graph paper, to prepare to draw out the final, official version of the Legend of Zelda "Ganon's Rage" world map. There will be the main quest (the dungeons, fighting Ganon), and three side quests (the first one you kind of have to do, unless you want to go through most of the game without a sword). The second two give you, respectively, the hookshot and the longshot, which can be used to access dungeons as opposed to using magic power to cross lakes or lava.

Also in this game is the smart-save feature. When you first unpack the map file from the RLE compressed appvar into the uncompressed appvar, a 2 or 4-byte checksum (whichever would be more sensitive) of the uncompressed map is saved. As you play the game and collect pieces off the map, obviously the values of the tiles change. When you exit the game, a new checksum is calculated. If it is different than the original checksum, the map is recompressed and overwrites the original appvar. If the checksum has not changed, the current map files are deleted, leaving only the compressed file, which, theoretically, should not have changed.

56
Axe / Help with Files
« on: December 21, 2010, 10:17:03 am »
I know that Axe has support for creating files of variables in Archive, so that they can be read (y-vars), but I am not quite sure how to create the files, then how to reference, read from, and write to them once they have been created. Help, anyone?

57
General Calculator Help / Zelda Music
« on: December 14, 2010, 04:27:36 pm »
I need an Axe code to play the Zelda theme song during the display of a splash screen. Can anyone help?

58
Axe / RLE in Axe
« on: December 07, 2010, 06:38:35 pm »
Does anyone have, or can anyone help with routines that will compress tilemap data into RLE, and decompress it into regular hex for maps.

59
TI Z80 / Legend Of Zelda Progress Thread
« on: December 02, 2010, 09:31:25 pm »
Here is where I post progress on the Zelda RPG:

Current Progress

Complete:

-block list complete.
-assigned hex values to block types for easy referencing in program.


Next on the roster:

-redraw the Light World and Dark World maps.
-redraw the dungeon maps

60
Axe / Need Help with Artificial Intelligence
« on: December 02, 2010, 12:08:12 pm »
Can anyone who is proficient with Axe lend me some help with Artificial Intelligence for a Legend of Zelda RPG. I am looking to make the enemies on screen head toward your character, unless invisibility is active, and try to collide. The routine needs to:

1. Get the number of enemies on the screen (up to 5 enemies) and return it.
2. Get the positions of each of those enemies.
3. Process movement of each enemy toward the player (either all move once per loop, or one moves at a time).
4. Update sprite display for the enemies on screen.

I can likely handle the collision detect.

Thank you in advance, and anyone who helps will be credited appropriately.

Pages: 1 2 3 [4] 5 6 ... 8