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.


Messages - FinaleTI

Pages: 1 ... 43 44 [45] 46 47 ... 126
661
Axe / Image Compression Help
« on: February 21, 2011, 12:35:39 pm »
For Pokemon TI, I've been thinking about the sprite data I'd need.
I'm looking at about 77312 bytes just for the battles sprites (this is the total for front and back, but it's still a lot).
I was wondering if someone could help me with compressing the images.

They're 4 lvl greyscale and here's a sample of the hex data:

Bulbasaur Hex Code:
Code: [Select]
PART_1:
00000080
00000100
00000240
00001C20
000320A0
00088120
00120100
00240110
0048C208
06492214
097E1214
0982140A
0018180A
08310C0A
14032612
12043102
1E0680E0
2C068244
20018648
4FFA4670
C0040980
43FC0010
21020208
10801408
0740E40C
00900804
00860804
0001F804
00105608
000611C8
00012090
0000C060

PART_2:
00000080
00000140
00000260
00003CA0
000721A0
000881A0
001203A0
00340F10
007EFF18
067F3F1C
097E3F1C
09827E1A
0019FC1A
0833FE3A
1407FFFA
120CFFF2
1E0EFFE6
2C06FFEC
2003FFF8
5FFE7FF0
C2041FE0
43FC1FF0
21023E78
1B817E18
07C0FC1C
00B0FC1C
008FF81C
0043FC1C
0033F7F8
000FF1F8
0001E0F0
0000C060

If someone could help with this, it would be greatly appreciated.

662
Ash: Phoenix / Re: Ash: Phoenix
« on: February 20, 2011, 06:07:23 pm »
 O.O That's an awesome title screen!

663
UberGraphX / Re: Project Paradise - Ubercalculator
« on: February 20, 2011, 06:04:49 pm »
The rock is free. The TI-nSpire CX isn't. :P Don't you love nature?

664
Axe / Re: VAT tutorial
« on: February 20, 2011, 03:24:48 pm »
Nice.

One thing I wanted to say was that the T2 byte actually has some use. DoorsCS uses it to determine what folder a program is in.

665
TI Z80 / Re: Pokemon TI
« on: February 20, 2011, 03:06:31 pm »
Thanks guys.

I'm trying to see if I can make heads or tails of this page, though. If I could figure out the compression technique used in Red and Blue, that could make my life even easier, quite possibly. Then I could theoretically grab the hex right out of the rom. Of course, that depends on how efficient that compression would be in Axe.

666
Axe / Re: External Vars Tutorial
« on: February 20, 2011, 03:01:48 pm »
Slight update, and new section thanks to what squidgetx posted.

1) Appvars and Programs
Spoiler For Spoiler:
Appvars and programs have just about the same structure when accessed through Axe. They can have names up to 8 characters in length, that do not start with a number. Appvars can contain lowercase letters in their name, and while programs can, it is more common practice for them to have all uppercase names. This is because if a program contains lowercase letters in its name, it cannot be run from the homescreen.

To access an appvar:
Code: [Select]
GetCalc("appvAPPVAR")→PointerWhere 'APPVAR' is to be substituted with the name of the appvar you want to access, and Pointer is where you want the data to point to.
For example:
Code: [Select]
GetCalc("appvAPPVAR")→AThis stores the location in RAM of the appvar APPVAR to the pointer A. You can then access data in the appvar by using pointers as you normally would.
Code: [Select]
GetCalc("appvAPPVAR")→A
1→{A}
The code above would store 1 to the first byte of the appvar APPVAR.
The code above will only work if the appvar exists and is in the RAM.

Now, if your appvar doesn't exist, you can easily create it by adding a second argument to your GetCalc() command.
Code: [Select]
GetCalc("appvAPPVAR",Size)→PointerWhere Size is the size in bytes of the appvar you want to create.

If the appvar exists, but is in the archive, there are a number of things you can do.
You could unarchive it, but if you are only going to read data from it, this is not the best way to do it.
Code: [Select]
UnArchive "appvAPPVAR"Most of the time if you do this, you'll have to end up archiving it when you're done with it.
Code: [Select]
Archive "appvAPPVAR"This can take more and more time if you haven't GarbageCollected recently, though. However, this does allow you to save your data in the archive.

If you simply want to read data from an archived appvar, then you could copy it to a file.
Code: [Select]
GetCalc("appvAPPVAR",File)Where File is the token for a Y-Var (Y0-Y9).

Once the appvar is copied to a file, you can read from it like a pointer.
Code: [Select]
GetCalc("appvAPPVAR",Y0)
{Y0}→A
This would store the first byte of your appvar to the pointer A.

Once you no longer need an appvar, you can simply delete it.
Code: [Select]
DelVar "appvAPPVAR"This will only work if the appvar is in the RAM. If you copied your appvar to a file, you don't need to worry about deleting a file, as ending the program will take care of clearing the file for you. In addition, you can copy an appvar to a file that you previously used with no adverse effects.
Code: [Select]
GetCalc("appvAPPVAR",Y0)
GetCalc("appvAPPVAR2",Y0)
This would copy the appvar APPVAR to file Y0, then copy the appvar APPVAR2 to file Y0. Accessing file Y0 would then allow you to access the data in APPVAR2.

Please note that data cannot be stored to files, merely read from files.


Programs can be accessed exactly the same way as appvars, except that you use the 'prgm' token instead of the 'v' you get from [2nd]+[8] (which becomes 'appv' with the Axe Tokens).

2) Real Variables
Spoiler For Spoiler:
Accessing real vars is fairly easy to do, actually.
First, getting the pointer to a real var is:
Code: [Select]
GetCalc("varA")→PointerWhere A can be substituted with any real var, A-θ, and Pointer is the where you want the data to point to.

Now, the tricky part is accessing the data in a real var. Simply doing:
Code: [Select]
GetCalc("varA")→P
1→float{P}
will not give you proper results. In fact, it will render the variable A invalid until you overwrite it properly, whether inside or outside the Axe program.

The correct offset for accessing a real var is Pointer-2.
Code: [Select]
GetCalc("varA")→P
1→float{P-2}
This code will store one to the real var A, and you can see that now outside of the Axe program. You can store 0-65535 to real vars using Axe, as Axe only supports two byte numbers. Note: You don't need to put a r after the float command if you are storing a two byte number.
The 'var' token is the 'u' you get from [2nd]+[7] (it becomes 'var' with the Axe tokens).

3) Accessing Arbitrary Variables (courtesy of squidgetx)
Spoiler For Spoiler:
Copy("HI",L1+1,2)
0->{L1+3}
E15->{L1}
GetCalc(L1)->A

It does the same thing as GetCalc("appvHI")->A, but I'm sure you can think of many applications of this method instead (shells and mem readers come to mind). You can use 05 to get a program or 06 to get a protected program (instead of $15). Other prefixes you may be able to use are (taken from the SDK. also I haven't tested all of these and would be wary if you tried GetCalc'ing an application for example)
Data Types:
00h Real
01h List
02h Matrix
03h Equation
04h String
05h Program
06h Protected Program
07h Picture
08h Graph Database
0Bh New EQU 
0Ch Complex
0Dh Complex
14h Application
15h AppVar
17h Group

This could be taken as a little confusing, so let's break this down a little bit.


Copy("HI",L1+1,2)
This line copies the name of the variable (in this case, "HI") to L1+1.

0->{L1+3}
This line adds the null byte or terminating zero to the end of the name string starting at L1+1. Where 3 is would be the length of the variable name + 1.

E15->{L1}
This line stores the type byte of the variable to L1. In this case, it's denotating an appvar. The E means the number that follows is the hexadecimal equivalent, so any of the hex numbers from the above list would work here in place of the 15.

GetCalc(L1)->A
This uses the string you just constructed at the beginning of L1 to create the variable.

667
Axe / Re: Arrays in Axe (Bullet Code Tutorial)
« on: February 20, 2011, 02:02:08 pm »


Looks good, but aren't labels only supposed to be up to 3 chars?

668
The Axe Parser Project / Re: MIDI To Axe Music Converter
« on: February 20, 2011, 11:35:43 am »
Once again Quigibo, why won't my file be accepted?
Open it up in Noteworthy Composer (there's a download link in this topic, I think it's on page 1) and save it as a type 0 or type 1 midi.
Then it should work.

669
TI Z80 / Re: Pokemon TI
« on: February 19, 2011, 11:38:49 pm »
Runer122 thank you!
It makes perfect sense now. The 7 bytes are just a string of bits that are on or off depending on whether or not the TM or HM in question can be applied.

And thanks everyone else for the support!

670
TI Z80 / Re: Pokemon TI
« on: February 19, 2011, 11:04:32 pm »
*BUMP*

Wanted to show I was still working on this. Slowly, but surely.
I've drawn up the special symbols, though I don't have them all on my computer, so I can't show you yet.

I've also been working on stat generation and such, and I feel I've got a good start, but I can't figure out the TM-HM flags.
It's a seven byte set of flags for each Pokemon that determines what TMs and HMs they can and can't learn. If someone could help with this, it would be greatly appreciated.

Quote from: Bulbapedia
The TMs which a Pokémon can learn are stored as a bunch of flags. Starting from the LSB of the first byte, and ending with the MSB of the last byte. The five HMs are treated as TMs 51-55.
These are the flags for Bulbasuar:
Code: [Select]
01 2D 31 31 2D 41 16 03 2D 40 55 00 40 E5 40 21 2D 00 00 03 A4 03 38 C0 03 08 06 00Here is the list of TMs and HMs Bulbasaur can learn in Generation I.
And the link to the base stats data structure page.

671
Nostalgia / Re: Nostalgia - An Axe RPG
« on: February 19, 2011, 08:21:59 pm »
Yeah, it's gonna be something like that.
I'm planning on a map and tile editor, as well as some map related data, like maybe setting the NPC convos or shop data.

672
The Axe Parser Project / Re: Bug Reports
« on: February 18, 2011, 06:00:14 am »
I found a bug:
If you use Bitmap(, it doesnt show up good in an application. It shows up a randomly-filled square with the size of the picture.
Is this a known bug?
Else, this is version 0.4.8
Yeah, I reported this a long while ago as well.

In order to use it in an App, you have to copy the bitmap to somewhere in RAM be it an appvar or freeram, then use Bitmap() with a pointer to the bitmap.

673
Other Calculators / Re: How did your program or game get its name?
« on: February 17, 2011, 04:00:44 pm »
Pokemon TI: A port of Pokemon Red and Blue to the TI-83+ SE/84+/84+ SE.
Nostalgia: A game that's made in memory of classic BASIC and ASM rpgs.
Blur: A tunnel game that blazes past the rest.
Collision Course: A tunnel game with a twist. Colliding doesn't cause a crash, but instead a recoil.
FMA: A Fullmetal Alchemist game made for Cage Match #5.

674
The Axe Parser Project / Re: MIDI To Axe Music Converter
« on: February 16, 2011, 09:56:48 pm »
Just be aware of the fact that right now, the convertor doesn't properly create the appvar's checksum.
You can fix this by opening the appvar in Wabbitemu and exporting it. This recalculates the checksum and lets you send the appvar to your calc.

675
Official Contest / Re: Storm #1: BASIC Game in 30 days
« on: February 16, 2011, 09:27:12 pm »
A 68k contest sounds kinda neat. Gives me an excuse to learn 89 BASIC. :P

Pages: 1 ... 43 44 [45] 46 47 ... 126