Omnimaga
Calculator Community => Discontinued => Major Community Projects => Correlation => Topic started by: Hot_Dog on December 14, 2010, 11:04:30 pm
-
Still looking at next January for the testing period!
I finished the AND, OR, XOR, Mask routines, my next step is using e^( to display small text.
-
Awesome! I'll have to re-practice my TI-BASIC to remind myself of how to use getkey and stuff to try this. :P
-
GOOD NEWS!
I had someone ask me at one point if Correlation would slow down Ti-Basic programs, to which I had to reply that all parser hooks slow down Ti-Basic programs, even if slightly.
But I forgot that one can use Asm( to run hex code. So I'll place guidance in the Correlation Manual to turn the parser hook off when not needed, and turn it on again when needed. When used properly, TI-BASIC TEXT-BASED GAMES WILL ALWAYS, ALWAYS RUN FASTER WITH CORRELATION THAN WITHOUT IT.
-
GOOD NEWS, EVERYBODY!
I had someone ask me at one point if Correlation would slow down Ti-Basic programs, to which I had to reply that all parser hooks slow down Ti-Basic programs, even if slightly.
But I forgot that one can use Asm( to run hex code. So I'll place guidance in the Correlation Manual to turn the parser hook off when not needed, and turn it on again when needed. When used properly, TI-BASIC TEXT-BASED GAMES WILL ALWAYS, ALWAYS RUN FASTER WITH CORRELATION THAN WITHOUT IT.
Fixed.
-
GOOD NEWS, EVERYBODY!
I had someone ask me at one point if Correlation would slow down Ti-Basic programs, to which I had to reply that all parser hooks slow down Ti-Basic programs, even if slightly.
But I forgot that one can use Asm( to run hex code. So I'll place guidance in the Correlation Manual to turn the parser hook off when not needed, and turn it on again when needed. When used properly, TI-BASIC TEXT-BASED GAMES WILL ALWAYS, ALWAYS RUN FASTER WITH CORRELATION THAN WITHOUT IT.
Fixed.
Futurama reference?
Edit:
Except I just realized that the professor says "Good news, everyone!" instead.
-
GOOD NEWS, EVERYBODY!
I had someone ask me at one point if Correlation would slow down Ti-Basic programs, to which I had to reply that all parser hooks slow down Ti-Basic programs, even if slightly.
But I forgot that one can use Asm( to run hex code. So I'll place guidance in the Correlation Manual to turn the parser hook off when not needed, and turn it on again when needed. When used properly, TI-BASIC TEXT-BASED GAMES WILL ALWAYS, ALWAYS RUN FASTER WITH CORRELATION THAN WITHOUT IT.
Fixed.
Ha ha ha
-
Nice Hot Dog. I think the slowdown is not as bad with some parser hooks than others, though. I think Omnicalc was the worst of all for that.
The only thing, though: Using Asm() is a bit slow by itself, so maybe sometimes you will be best not disabling hooks altogether even when Correlation isn't needed. It will depend how many sub-programs do you have and how much RAM left.
-
The only thing, though: Using Asm() is a bit slow by itself, so maybe sometimes you will be best not disabling hooks altogether even when Correlation isn't needed. It will depend how many sub-programs do you have and how much RAM left.
I'm thinking something along the lines of Asm(FDCB368E). I'll have to check this out, I didn't think that it could be slow like this. I thought, though maybe I'm wrong, that using this would be a good idea if there were at least 6 lines of code that didn't need Correlation
-
GOOD NEWS, EVERYBODY!
I had someone ask me at one point if Correlation would slow down Ti-Basic programs, to which I had to reply that all parser hooks slow down Ti-Basic programs, even if slightly.
But I forgot that one can use Asm( to run hex code. So I'll place guidance in the Correlation Manual to turn the parser hook off when not needed, and turn it on again when needed. When used properly, TI-BASIC TEXT-BASED GAMES WILL ALWAYS, ALWAYS RUN FASTER WITH CORRELATION THAN WITHOUT IT.
Fixed.
Futurama reference?
Edit:
Except I just realized that the professor says "Good news, everyone!" instead.
DAMN.
-
DJ, I forgot that Asm( can only run programs, not hex code. However, I found that I can use the regraph hook to turn on the parser hook when it's been turned off. Since I can prevent the graph screen from being drawn at all, I'll use a command -- so far, ZoomSto -- to turn on the parser hook. That way, Ti-Basic Text-Based games will STILL run faster with Correlation than without it. (If this doesn't make sense, just trust me :)
-
Seems good to me. Good luck! :)
-
I'll be doing the rest of my in-house testing/coding next January. I have been working on the Correlation Manual, and I plan to have it released before the end of the month. Those of you hoping to test Correlation might want to read through the manual when it's released ;D
-
Aah ok. Just one thing, though, especially since it's an utility to help programmers: try to not make the readme excessively long. A lot of people are turned away by Celtic III readme because it's too long and they use xLIB readme instead. Some people prefer larger readmes, though, so it's a good idea to maybe include two versions. Some people just get lost when they see a wall of text. X.x
-
Aah ok. Just one thing, though, especially since it's an utility to help programmers: try to not make the readme excessively long. A lot of people are turned away by Celtic III readme because it's too long and they use xLIB readme instead. Some people prefer larger readmes, though, so it's a good idea to maybe include two versions. Some people just get lost when they see a wall of text. X.x
Rather than a read-me, it's like a "For dummies" book, in pdf. However, if people find it too long during the testing period, I will take your advice and include a quick readme. Like Axe, though, the concept requires a lot of "how to do" rules, and thuse more documentation is required
-
Aah ok. Just one thing, though, especially since it's an utility to help programmers: try to not make the readme excessively long. A lot of people are turned away by Celtic III readme because it's too long and they use xLIB readme instead. Some people prefer larger readmes, though, so it's a good idea to maybe include two versions. Some people just get lost when they see a wall of text. X.x
My favorite readme ever is the one for Celtic III. ;D
I like the huge ones. The DCS SDK is also one of my favorites. O0
This sounds great, Hot Dog. As for running raw hex, you can use this program by Zeda: http://www.ticalc.org/archives/files/fileinfo/425/42536.html
-
As for running raw hex, you can use this program by Zeda: http://www.ticalc.org/archives/files/fileinfo/425/42536.html
Thanks, ztrumpet! Although I have no need for running raw hex anymore 0_0
-
Aah ok. Just one thing, though, especially since it's an utility to help programmers: try to not make the readme excessively long. A lot of people are turned away by Celtic III readme because it's too long and they use xLIB readme instead. Some people prefer larger readmes, though, so it's a good idea to maybe include two versions. Some people just get lost when they see a wall of text. X.x
My favorite readme ever is the one for Celtic III. ;D
I like the huge ones. The DCS SDK is also one of my favorites. O0
This sounds great, Hot Dog. As for running raw hex, you can use this program by Zeda: http://www.ticalc.org/archives/files/fileinfo/425/42536.html
Yeah the DCS readme was also pretty great.
-
New feature aimed at people creating maps:
Normally, text wraps once the 16th character of a line is reached. This usually means that you can't put a map in Str0 30 characters wide and expect it to come out right. But with Correlation, you can assign a value to Xmax to specify how many characters wide a text-based tilemap is. In that case, your tilemap will display correctly. Note that this works only with Ln( and e^(.
I'm also sure that I can add wrapping to e^(, but I'll have to see
-
Oh nice! Does that means we could also display strings of text that wraps on a less wide portion of the screen too? An example would be The Reign of Legends 3 convos.
(http://www.omnimaga.org/images/screenshots/rl3village5.gif)
In my game, the text box took about most of the width where the map was displayed, but did not display over the HUD.
-
Oh nice! Does that means we could also display strings of text that wraps on a less wide portion of the screen too? An example would be The Reign of Legends 3 convos.
In my game, the text box took about most of the width where the map was displayed, but did not display over the HUD.
I don't see why not :D
Another new mode, since I'm borrowing S.A.D. code: Word Wrap for long story intros
-
Cool to hear :D
-
Manual and Table
-
looks cool! I can't see what BASIC text games will become after this! btw, are you planning on making an APP version? I get a lot of RAM clear so keeping Corelate in RAM...
-
looks cool! I can't see what BASIC text games will become after this! btw, are you planning on making an APP version? I get a lot of RAM clear so keeping Corelate in RAM...
You know, it couldn't hurt, and I'll look into it. But I'm not making any promises, because I have to see if it will work. I do know that an app will not install and uninstall itself automatically, unlike pgrmCORELATE.
-
it could install and uninstall Parser hooks maybe?
have a token to activate it and deactivate it. ;)
-
it could install and uninstall Parser hooks maybe?
have a token to activate it and deactivate it. ;)
Point is, you would need to run the app at least once. As far as I know--but again, I'm not sure--everything else would run like it does with pgrmCORELATE. Of course, an app means you wouldn't need pgrmFONTROUT
-
New feature! I know now that there's people who want to have tokens with easy-to-remember names to make a program easy to write. By using 2:Asm(pgrmCORELATE, you'll receive tokens with easy-to-remember names. For the app, there will be an option available.
-
Nice, this will change the token names only if the person desires, right?
-
Nice, this will change the token names only if the person desires, right?
Right, only if the person desires.
-
Here's a feature not mentioned in the manual: If you use the command 1Yscl, your font will be adjusted to create enough space for Upper Case "M" and Upper Case "W." I added this because when you display small text, more space is needed for for Ms and Ws. (Use 0Yscl to turn it off, although it is off by default.)
This will only work for fonts 3, 4 or 5 pixels wide. A 6-pixel wide font will already have enough space for Ms and Ws, so Correlation will ignore 1Yscl for fonts this size and bigger.
-
So this will disable monospace for those fonts? What if our font set has the w or m taking only 3 pixels, though?
-
So this will disable monospace for those fonts? What if our font set has the w or m taking only 3 pixels, though?
In that case, you don't have to use 1Yscl. However, there are some people who might have A-L, N-V, X-Z taking 3 pixels, whereas M and W require 5. These people would need to use 1Yscl, otherwise all characters would take 3 pixels each no matter what.
-
I've changed real( to int( to fix a bunch of bugs I was receiving. Basically, I'm having trouble working with 2-byte tokens, and real( is a two-byte token.
You can still use int( to do math as long as you don't use the name of a font that's on your calculator. For instance, you can use int(1.34), and you can also use int(ABCDEFGH) as long as pgrmABCDEFGH is not on your calculator.
-
I see. I guess it's better that way, though, especially if someone uses the function over 500 times in a game. It doesn't sound like much, but 500 bytes can make a big difference. Sometimes, someone may only have 800 bytes of RAM left to run his game.
In Reuben Quest 2, sometimes you have about 300 bytes of free RAM after recalling a tilemap.
-
I guess it's better that way, though, especially if someone uses the function over 500 times in a game. It doesn't sound like much, but 500 bytes can make a big difference. Sometimes, someone may only have 800 bytes of RAM left to run his game.
You know, you've got a point there.
-
I guess it's better that way, though, especially if someone uses the function over 500 times in a game. It doesn't sound like much, but 500 bytes can make a big difference. Sometimes, someone may only have 800 bytes of RAM left to run his game.
You know, you've got a point there.
Actually, why not have a way to map all your programs to some value or something. Like have PrgmA map to 0, PrgmB map to 1, etc, then you could do:
int("0
int("1
for A and B respectively. Saves bytes, at least, and int remains as int and won't get confused.
-
Actually, why not have a way to map all your programs to some value or something. Like have PrgmA map to 0, PrgmB map to 1, etc, then you could do:
int("0
int("1
for A and B respectively. Saves bytes, at least, and int remains as int and won't get confused.
It might save confusion, but for the most part I really don't think it will save space. There are exceptions, but I can't think of many
-
That actually doesn't save much space, right? (Unless prgm is a 2 byte token and you use program names that are longer than 1 character?)
-
That actually doesn't save much space, right? (Unless prgm is a 2 byte token and you use program names that are longer than 1 character?)
Program names for fonts have to be 8 characters long, no less. However, the big issue is how does the calculator know what program is mapped to 0 and what program is mapped to 1 unless you tell it? And if you tell it, that takes a lot of space.
-
That actually doesn't save much space, right? (Unless prgm is a 2 byte token and you use program names that are longer than 1 character?)
Program names for fonts have to be 8 characters long, no less. However, the big issue is how does the calculator know what program is mapped to 0 and what program is mapped to 1 unless you tell it? And if you tell it, that takes a lot of space.
Not necessarily. I was thinking of having it be in the font files itself, but that might have conflicting fonts. So then I thought of a font name that was just for that program. You could even have primary and secondary names in the file, and still save bytes. So, file prgmA, and prgmB have a primary name of "SADTest2", and a secondary name of "Hellowrd". If SADTest2 has, say, two files that both claim to be the 1 file, then it tries the secondary name.
Does this make sense at all?
-
That actually doesn't save much space, right? (Unless prgm is a 2 byte token and you use program names that are longer than 1 character?)
Program names for fonts have to be 8 characters long, no less. However, the big issue is how does the calculator know what program is mapped to 0 and what program is mapped to 1 unless you tell it? And if you tell it, that takes a lot of space.
Not necessarily. I was thinking of having it be in the font files itself, but that might have conflicting fonts. So then I thought of a font name that was just for that program. You could even have primary and secondary names in the file, and still save bytes. So, file prgmA, and prgmB have a primary name of "SADTest2", and a secondary name of "Hellowrd". If SADTest2 has, say, two files that both claim to be the 1 file, then it tries the secondary name.
Does this make sense at all?
It doesn't, but it sounds like you're making it a little too complicated. It would be much easier--which I may or may not do--to have a primary name selected, one that's used for all fonts, 6 characters long--and have a 2-digit number following the name. For instance, ZERATU01, ZERATU02, ZERATU00, etc.
-
That actually doesn't save much space, right? (Unless prgm is a 2 byte token and you use program names that are longer than 1 character?)
Program names for fonts have to be 8 characters long, no less. However, the big issue is how does the calculator know what program is mapped to 0 and what program is mapped to 1 unless you tell it? And if you tell it, that takes a lot of space.
I see, thanks for clarifying.
-
I wanted to finish the tiles I needed for the first map of Starcraft: Zeratul, so now I am working on "Map Mode" for Correlation. Progress screenshot coming soon!
-
I wanted to finish the tiles I needed for the first map of Starcraft: Zeratul, so now I am working on "Map Mode" for Correlation. Progress screenshot coming soon!
Sweet, I like screenshots.
-
Awesome! I can't wait for screenies :D
Will map layout be similar to Starcraft/Diablo games or will it be more like other calc RPGs?
-
Awesome! I can't wait for screenies :D
Will map layout be similar to Starcraft/Diablo games or will it be more like other calc RPGs?
Kind of both. It's like S.A.D.--there are some flat tiles and some 3d-ish tiles
-
New screenshot:
http://ourl.ca/8710/162673
-
Yeah I saw last night. Pretty nice. I wondered about layout since Starcraft is more isometric in general, but since correlation uses fonts based on TI ASCII characters, with isometric tiles you would run out of tile slots extremly fast and fonts would be large.
-
Yeah I saw last night. Pretty nice. I wondered about layout since Starcraft is more isometric in general, but since correlation uses fonts based on TI ASCII characters, with isometric tiles you would run out of tile slots extremly fast and fonts would be large.
Exactly. Isometric can be done, but it does take more space.
-
By request of graphmastur, I've released an on-calc pixel art font editor for Correlation. Unfortunately, it's gotten so big that it's an application. However, I've tested it, and it should contain no bugs.
-
Sweet :D Isometric with this would be interesting, but tricky because of all the offset methinks o.O
-
By request of graphmastur, I've released an on-calc pixel art font editor for Correlation. Unfortunately, it's gotten so big that it's an application. However, I've tested it, and it should contain no bugs.
Sweet, thanks! This will make it easier to make fonts and edit them on calc.
-
I made a replacement for the function sub( to help with long strings. Just replace sub( with abs(.
For a small string, the speed difference between abs( and sub( is almost unnoticeable. However, if you have the following code for a 2000 char string:
For(A,1,1000
sub(Str0,1000,1
End
1 Minute, 25 seconds
With Correlation:
For(A,1,1000
abs(Str0,1000,1
End
15 seconds
-
Release this already!
People competing in the Storm will be eternally grateful.
-
Release this already!
People competing in the Storm will be eternally grateful.
Lol! What is "the Storm," by the way?
-
It works for 2 byte tokens too right? This is becoming even more awesome! :D Out of curiosity, why did you not simply override the Sub() command?
-
It works for 2 byte tokens too right? This is becoming even more awesome! :D
No it doesn't, sorry. It's meant for strings that are used for displaying custom fonts, and those strings only use 1-byte tokens. That's why the routine is so fast
-
Release this already!
People competing in the Storm will be eternally grateful.
Lol! What is "the Storm," by the way?
The Cage Match where all the TI-BASIC competitors try to make the best game possible.
-
But wouldn't correlation not be allowed since its a pure Basic contest? And Hot_Dog ah i see, that makes sense :)
-
That's right. Silly me. o.O
-
I made a replacement for the function sub( to help with long strings. Just replace sub( with abs(.
For a small string, the speed difference between abs( and sub( is almost unnoticeable. However, if you have the following code for a 2000 char string:
For(A,1,1000
sub(Str0,1000,1
End
1 Minute, 25 seconds
With Correlation:
For(A,1,1000
abs(Str0,1000,1
End
15 seconds
Hmm, I wonder at about what string length the difference between sub and your custom command becomes significant. Nonetheless, very cool. =)
-
Assuming uniformly-sized tokens is a lot faster, it seems ;D
Great progress, Keep up the good work! :D
-
Quick thought: is it equally fast in Basic to display Sin and S? if so, since Sin uses S, i, n and ( as 4 text sprites you could optimize a tilemapping program that has 4 sprites, one after another, really often. :)
-
Quick thought: is it equally fast in Basic to display Sin and S? if so, since Sin uses S, i, n and ( as 4 text sprites you could optimize a tilemapping program that has 4 sprites, one after another, really often. :)
I'm pretty sure that S is faster than Sin(. Whatever the case, using the token to display four token sets is easier said than done, especially since Correlation does not allow individual lower case letters
-
oh, I thought the OS used S i and n to create sin, and made them act like one token even though it rendered 3 text sprites.
-
oh, I thought the OS used S i and n to create sin, and made them act like one token even though it rendered 3 text sprites.
Yeah, but I really don't want to mess around with tokens
-
So, using correlation if you changed the letters, Sin would still look like Sin?
-
I'm afraid I don't know what you mean. Can you rephrase?
-
I finally have different sprite types (including masked) working, as well as optimizations and copying the screen only when all text is drawn. Look in "Starcraft:Zeratul -- Eye Candy" for a demonstration screen shot
-
Here's a demonstration of Word Wrap Mode. Once I fix some bugs (including getting "Ms" and "Ws" to display correctly) I'll apply this to a Starcraft: Zeratul Cutscene.
-
I'm just wondering, but is the "on-calc font editor" for Correlation posted earlier in this topic supposed to do anything, or is it just supposed to rickroll?
-
Could you turn off the run indicator when you are scrolling the text?
-
I'm just wondering, but is the "on-calc font editor" for Correlation posted earlier in this topic supposed to do anything, or is it just supposed to rickroll?
Sorry, bro, it's just a rickroll
-
I'm just wondering, but is the "on-calc font editor" for Correlation posted earlier in this topic supposed to do anything, or is it just supposed to rickroll?
Sorry, bro, it's just a rickroll
Which obviously shows I haven't been able to test it. Oh, and it also makes you lose the game.
-
I'm just wondering, but is the "on-calc font editor" for Correlation posted earlier in this topic supposed to do anything, or is it just supposed to rickroll?
Sorry, bro, it's just a rickroll
Darn, do you actually have one working? If not I made something really, really close (in Axe) in prep for Ximp ;)
EDIT: And I think when I finish Ximp, I'll add an option to export to a Correlation-compatible font, if that's okay with you?
-
I'm just wondering, but is the "on-calc font editor" for Correlation posted earlier in this topic supposed to do anything, or is it just supposed to rickroll?
Sorry, bro, it's just a rickroll
Darn, do you actually have one working? If not I made something really, really close in prep for Ximp ;)
EDIT: And I think when I finish Ximp, I'll add an option to export to a Correlation-compatible font, if that's okay with you?
What's XIMP? And no, I have no problem with you making a Correlation-compatible one, and I actually encourage it. :D Just make sure that the same guidelines apply: Width from 1-16, Height from 1-16, Starting character 0-255 less than or equal to ending character, name of font must be eight characters long.
-
Here's a demonstration of Word Wrap Mode. Once I fix some bugs (including getting "Ms" and "Ws" to display correctly) I'll apply this to a Starcraft: Zeratul Cutscene.
WOW great! I always wished Text( had word-wrap, because it can be annoying to display huge text sometimes.
I'm glad this is still progressing nicely :)
Release this already!
People competing in the Storm will be eternally grateful.
Lol! What is "the Storm," by the way?
The Cage Match where all the TI-BASIC competitors try to make the best game possible.
Lol earlier when someone mentionned The Storm, I thought TheStorm/Jonimus actually organized a contest. That would've made 3 running at once O.O.
-
Those of you looking forward to testing Correlation will be happy to know that I am nearly done with it! Sadly, the beta won't be available until February, and I have to redo some of the manual (meaning that you have to read it again), but the major stuff--save animated tiles--is done. I just have to do animated tiles and fix up the little things such as error checking.
-
Sweet! Can't wait!
-
Awesome! Hopefully I can find time to write some test programs for it :D
-
Added a couple of error messages, with more to come so that a Correlation programmer won't crash the calcuator.
OUT OF RANGE, for if you try to display a character that is not part of your font
NOT ALLOWED, for if you try to display a string that has a two-byte token
-
Cool!
Question: I don't remember if that was asked before, but will there be a version of Correlation that has error checks disabled for non-developers? Games would run faster with such version. Devs would use the dev version to avoid crashing their calc but gamers would use the other one.
-
Cool!
Question: I don't remember if that was asked before, but will there be a version of Correlation that has error checks disabled for non-developers? Games would run faster with such version. Devs would use the dev version to avoid crashing their calc but gamers would use the other one.
Any game that uses the Ti-Basic parser is going to run slow...disabling error checking makes almost no difference at all.
-
Ah ok, I was asking since some people might need every picosecond they need. :P
-
Screenshot coming tonight! It will be in Zeratul: Eye Candy after I fix some data. Basically, the ASM code works correctly, but I have some invalid data in the appvar I created for cutscenes.
-
Cool, I'll check there. :P
By the way, you're making sure to keep Nspire compatibility, right?
-
By the way, you're making sure to keep Nspire compatibility, right?
I'm doing my best, but I don't own a Nspire so someone else would need to test compatibility to the fullest
-
Ah ok. In any case, that z80 opcodes table ScoutDavid posted has all of them in gray. There are many, though, so it might be hard to find them.
Somebody should create a program that scans a z80/asm file to detect non-Nspire instructions.
-
Here's animated tiles! They're a bit tricky to understand unless you read about them in the new manual, but updating the screen causes the calculator to choose the next tile. You have 64 seperate frames available for animation...you can have 1 tile with 64 frames of animation, 32 tiles each with 2 frames, or a combination like 2 with 1 frame, 6 with 5 frame, 3 with 4 frame, etc. In this example, it's 1 tile with 4 frames.
Source Code:
int("AY ;AY = "Animated Yes"
int(TRAFFICL
Lbl S
e^(0,0,"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
int("DD
For(N,1,300
End
Goto S
-
Sorry if this is a dumb question, but what are the advantages of using this over Axe or Assembly?
I've never used these libraries, so I don't know.
-
Ah, the major advantage is size. An Axe or assembly program doing that is much larger than the coded needed to do that. Plus, this runs at almost the same speed. If it is slower, it is almost unnoticeable.
-
Xeda is right. Another advantage (and the reason I started this project) is that with Correlation you need to deviate very little from Ti-Basic. If you use Axe or ASM, you require a new language, more code and deeper thinking. But if you are already good at creating Ti-Basic games, especially those that use text for graphics, you can display amazing graphics without having to learn more than a few more lines of code.
By the way, Correlation does run slower than Axe and Assembly. However, it does help in speeding up a normal Ti-Basic program.
-
So it is faster than BASIC, slower than Assembly and Axe, but does things BASIC cannot do (easily and quickly anyway).
-
Looks nice Hot Dog, and yeah BASIC code is generally smaller than ASM because it's interpreted: The routines used in BASIC aren't included in your code, but rather in the TI-OS. However, BASIC data is considerably larger than in ASM in most cases, unless you use compression, which can be slow with no ASM libs.
-
Ah, that does make sense. Anyone who want to run the program would require the library to run it, though, right?
BTW, the speed is most impressive. I shall have to try this out when it is released.
-
Ah, that does make sense. Anyone who want to run the program would require the library to run it, though, right?
BTW, the speed is most impressive. I shall have to try this out when it is released.
Yeah, the library would be required. It's like Xlib
-
Thanks to DJ's suggestion, you can now have custom windows for displaying text. The custom window is used only with Correlation, so you can display text that won't interefere with anything you want to draw outside the window. Notice in this screenshot, I could include statistics at the very bottom of the screen if I wanted to, statistics that cannot be erased.
This doesn't work with masked sprites yet, but I plan to fix that.
Ti-Basic Source Code:
7->ThetaMin ;Left-Hand Coordinates of the Window
88->ThetaMax ;Right-Hand Coordinates of the Window
7->TMin ;Top Coordinate of the Window
58->TMax ;Bottom Coordinate of the Window
60->ThetaStep ;The Map is 60 tiles wide
int("FF ;This command is REQUIRED if even one window coordinate is changed. It does the final steps in creating a window.
pgrmZERATUMA
-
Oh, that's cool! Is that what an HUD is? I saw that somewhere and I have no clue what it means :D But that will be very useful!
-
Oh, Hot_Dog... Do you have an on calc font editor? I might be able to make one. I have made some before (including for Omnicalc fonts, Celtic 3/xLIB/BatLib fonts and sprites).
Edit: Okay, I checked a few pages back so now I have the question of how exactly the sprites are stored. They can be 1 to 16 pixels wide? So if it is 2 pixels wide are the first 2 bits set like 00000011 or is it like 11000000? And if it is 9 pixels wide is it 0000000111111111 or is it 1111111110000000?
Edit 2:Also, if the user only wants to use A~Z and a~z, then the actual bytes corresponding to the ASCII are used, right? and do the few random chars between 'Z' and 'a' need to be included in the sprite set? And do I start with 'A'? Also, do I need to worry about a header?
Edit 3:Can they be any height (up to 64 pixels)?
-
Thanks for the font editor! Incidentally Graphmastur will be quite pleased, he was hoping that I would work on one.
The font is stored as a Ti-83+ protected program. The first byte is the width of a character, in pixels, from 1-16. The second byte is the height of a character, from 1-16. The third byte is the starting character value (specified by the user), from 0 to 255. The fourth byte is the ending character value, from 0 to 255. Afterwards comes the graphics data, usings standard 8 bit 2-color format, one character after the other. (For example, if a character is 6 pixels wide, and the first byte is all black, the data for that row is %11111100)
For Edit 2: Characters are assigned according to Ti-83+ one-byte tokens. Look here for reference: http://www.omnimaga.org/index.php?action=dlattach;topic=5750.0;attach=5243. Also, if a user does A-Z and Radian to ZTrig, all characters in between MUST be included.
It would be helpful if you displayed the token/character that corresponds to the character that is being designed. For instance, the user draws a bird in the font, a bird that is displayed whenever there is an int( in a string. Or there might be traffic lights whenever the calculator reads an "A".
-
Awesome, thanks! Okay, I think I can do that! I actually already started and I set it up so that it took those arguments!
I will be sure to try to add copying and pasting of sprites, too... It won't be too amazing, but it should be enough to get the job done.
-
Awesome, thanks! Okay, I think I can do that! I actually already started and I set it up so that it took those arguments!
I will be sure to try to add copying and pasting of sprites, too... It won't be too amazing, but it should be enough to get the job done.
Awesome! Don't worry about "amazing", many people will like this much better than a pure bitmap program
-
Xeda, I forgot to mention, program names MUST be eight characters long, no less
-
Okay, thanks! I just got back from an hour long french discussion session, so I can get back to work on it!
-
That's cool! Indeed, you can work as fast as you can on it. But as I tell everyone who helps me somehow, I am very understanding of events that cause delays, since imo calculator programming is not the most important thing in the world
-
Spaces can be in the name, right? Because that would be really cool... just sayin' >_>
Also, as a neat little trick, if you make it 9 bytes instead, the user can define the type of var using a letter as a prefix. When you do _CheckFindSym it automatically does "and 1Fh" on the type byte, so in BASIC, if you use E which is 45h, that is read as 05h... which is a program. if you do 5 which is 35h or U which is 55h, it is read as 15h which signals an appvar... >_> Just sayin', it could be useful...
-
Spaces can be in the name, right? Because that would be really cool... just sayin' >_>
Also, as a neat little trick, if you make it 9 bytes instead, the user can define the type of var using a letter as a prefix. When you do _CheckFindSym it automatically does "and 1Fh" on the type byte, so in BASIC, if you use E which is 45h, that is read as 05h... which is a program. if you do 5 which is 35h or U which is 55h, it is read as 15h which signals an appvar... >_> Just sayin', it could be useful...
Useful, yes, but how many people would use that? This is, after all, aimed at people who prefer Ti-Basic
Oh, and no spaces :(
-
Awww, okay :D So just the standard letters and numbers... That should be doable. *sniffle* :P
-
Awww, okay :D So just the standard letters and numbers... That should be doable. *sniffle* :P
[I'm having a little bit of fun, don't mean to offend] Please don't, I hate seeing a girl cry :( [/I'm having a little bit of fun, don't mean to offend]
-
's... 's okay... I think I'll just go cry myself to sleep now :'(
So as not to get too offtopic, I am making it so that if the variable is archived you won't be able to edit the set, but you can still look at it. I was going to use an input to make the size of the variable and the sprites, but I guess I will try to make that handled by the user. Right now, a string input is required for the name and it searches, if the var doesn't exist, it creates it with whatever settings.
-
For size, I think all you need from the user is what the starting character numbers and ending character numbers are. This gives the number of characters. From there, you multiply by the size in bytes of each character, add 4, add 2 (2 bytes in a program tells the calculator how many tokens are in the program), etc. and you have your program size
-
I love the math involved in assembly ^-^ I am working with bits and modulus'... I am taking advantage of bcalls with this one to save memory... I'm going to have to anyways for the sprite editor because it will be super fast otherwise :D
-
Lol, even though you can do the math B_CALLS are great. I hate it when assembly programmers put down B_CALLS, because they have their uses
I forgot to mention, on the table of Ti-83+ tokens and characters, you'll see some areas blacked out. Let the user know that the character is not available directly, but they should still be allowed to create a character for that spot. (For instance, they should be allowed to design a character after the one they made for ":".) In the advanced section of the manual I list tips and tricks for taking advantage of those areas.
-
Okay, I'll try... But I won't need to use bcalls for math because I am just doing integer math... I am going to be using things like PutS (4510) and DispHL (4507) and stuff like that.
-
Ah, that makes sense now ;D
-
Thanks to DJ's suggestion, you can now have custom windows for displaying text. The custom window is used only with Correlation, so you can display text that won't interefere with anything you want to draw outside the window. Notice in this screenshot, I could include statistics at the very bottom of the screen if I wanted to, statistics that cannot be erased.
This doesn't work with masked sprites yet, but I plan to fix that.
Ti-Basic Source Code:
7->ThetaMin ;Left-Hand Coordinates of the Window
88->ThetaMax ;Right-Hand Coordinates of the Window
7->TMin ;Top Coordinate of the Window
58->TMax ;Bottom Coordinate of the Window
60->ThetaStep ;The Map is 60 tiles wide
int("FF ;This command is REQUIRED if even one window coordinate is changed. It does the final steps in creating a window.
pgrmZERATUMA
Nice, this would really be useful. ;DLol, even though you can do the math B_CALLS are great. I hate it when assembly programmers put down B_CALLS, because they have their uses
I forgot to mention, on the table of Ti-83+ tokens and characters, you'll see some areas blacked out. Let the user know that the character is not available directly, but they should still be allowed to create a character for that spot. (For instance, they should be allowed to design a character after the one they made for ":".) In the advanced section of the manual I list tips and tricks for taking advantage of those areas.
I think they can be very useful. Even Axe uses them. The only time I feel they should not be used is when speed is important. For example, Axe's bitmap command is considerably slower than Quigibo's sprite command.
-
XOR, OR, AND, MASK and OVERWRITE sprites/clipping are working perfectly now. In addition, after much deliberation, I made masked sprites much, much, much easier to design.
-
Oh great, masked sprites :love: . This should make BASIC even more interesting. ;D
-
You can now access archived fonts. In this screenshot, pgrmTESTTWOT is the font that the example program uses. You can, of course, see that it is archived ;D
-
Hey, it's nice to see that you can use archived fonts directly now. :) Keep up the good work!
-
I'm happy to see archived fonts are now possible. ;D Is the speed difference noticeable or is it negligible like xLIB? (1-ish% slowdown)
I would have used Omnicalc fonts before, but what held me from doing it was the lack of RAM due to the font taking 1800 bytes of it or so.
-
I'm happy to see archived fonts are now possible. ;D Is the speed difference noticeable or is it negligible like xLIB? (1-ish% slowdown)
I'm pretty sure you won't tell the difference in speed.
-
Good to hear. :D
-
Part of the reason that Correlation is not available yet for beta testing is I am making sure that few bugs exist when testing begins. To that point, I am always creating new test programs to play with. So here's another screenshot demonstrating animated tiles.
Source:
------------------
int("TESTFOUR
det({4,2,1,1,3}) ;We have one animation with 4 frames, one with 2, two
;non-animated images, and one animation with 3 frames
int("AY
int("M0
int("E0
Lbl AA
e^(0,0,Str0
int("DD
For(N,1,300
End
Goto AA
-
hmm... could I get an alpha version to play with? I have a lot of free time this week up to like next wednesday/thursday, and I don't mind bugs, its one of the advantages to having two calcs. ;)
-
hmm... could I get an alpha version to play with? I have a lot of free time this week up to like next wednesday/thursday, and I don't mind bugs, its one of the advantages to having two calcs. ;)
Eh...alright, after I fix a rather serious issue. However, you've got to promise not to report any bugs for right now--this will come later.
-
Looks nice, but is that the max possible speed for animated tiles? Or did you just slow down the program?
-
I slowed down the program using a For...End loop
-
Ah ok lol, phew. :P
I wonder if with absolutely no delay and calling the routine after every BASIC/correlation command we can have grayscale? With xLIB you just recall a pic using the XOR logic to invert the checkered patterns on the screen, but calling it every other command allows decent quality grayscale.
-
Well I'm no grayscale expert, so you'd have to experiment
-
Well, the key is only speed. DCS/xLIB real(3 function (recallpic) recalled a pic using XOR logic about 40 times a second I think, which was enough to have decent looking grayscale on a 83+SE. We even had to slow it down sometimes because it was so out of sync with the LCD XD
-
Short, sweet and to the point: Correlation Beta should be available in 5-6 days.
-
Yay! I can't wait to try it.
Does it include "Correlific Mode"? or do we *just* get the awesome, easy tilemapping using the homescreen? :P
BASIC has never looked so good :P
-
Yay! I can't wait to try it.
Does it include "Correlific Mode"? or do we *just* get the awesome, easy tilemapping using the homescreen? :P
BASIC has never looked so good :P
Correlific Mode will come later. I will be working on that during the testing stages. However, you get tilemapping on homescreen AND graph screen
-
Short, sweet and to the point: Correlation Beta should be available in 5-6 days.
Short, excited, and impatient: Awesome!
-
SOOOOOO Close to the beta!
COMPATABILITY WITH OTHER LIBRARIES FULLY IMPLEMENTED!
The below screenshot uses Celtic III to draw a box. Then Correlation is used to turn the run indicator off--so when the "Pause" command is reached, you don't see the little "pause" bar in the upper corner.
As you can see from the screenshot, it is very important that Celtic III is installed at the start. When the program is finished, Celtic III is restored so that you can use it normally.
Instead of 800 bytes of RAM, compatability will now require only 100 bytes of RAM to save important data, just in case a library or another ASM program uses smallEditRAM.
Source Code
--------------------
1:Asm(pgrmCORELATE
int("CN ;Stands for "Correlation No," as in "Do not use Correlation." Turns control to whatever was previously installed. Also makes it safe
;to run other Asm( programs.
real(12,9,5,5,90,58,1 ;Uses Celtic III to draw the box
int("CY ;Hands control back to Correlation
int("RN ;Turn off the run indicator
Pause
-
That's actually pretty cool. So, basically, you still have the hook, but you immediately pass it to correlation. Does this slow it down? What if there is no other hooks and it runs across int("CN ?
-
There is definitely a length of time from switching from one to the other, but you can switch back and forth 1000 times and Correlation will never slow down.
If no other hooks are installed, Correlation simply will not run. But data will still be copied safely. This is for people who don't need parser hook libraries but have their own Asm( programs.
-
WONDERFUL
and sorry for not having noticed you released the alpha, Hot_Dog. i was out of town and only saw the message just now, meaning i haven't done anything towards a demo program yet.
-
sorry for not having noticed you released the alpha, Hot_Dog. i was out of town and only saw the message just now, meaning i haven't done anything towards a demo program yet.
The alpha was optional. Some people wanted to start early, but you don't have to start a demo program until the beta version comes out.
-
ERKH! That's awesome :D
-
Wow awesome, I'm glad it's gonna be in beta soon!
-
Due to the things I have to change to speed up ln(, I will be able to add at least three more features:
1. (Requested by DJ) int("GN will turn off certain error checking sections of code, speeding up the process of drawing text. You should only disable error checking when you know for sure that your code has no errors, meaning it's ready to be distributed
2. ln( nomally displays 6x8 text on 16 columns and 8 rows. int("H1 will allow you to draw 8x8 text on 12 columns and 8 rows. While this does not allow you to draw 8x8 text anywhere you want, it will be MUCH faster than e^( for 8x8 sprites. Similarily, int("H2 will allow you to draw fast 16x16 text on 6 columns and 4 rows.
3. To speed things up for "homescreen" fonts, ln( and e^( cannot normally be used together anymore. You can, however, use ln( to draw a quick background, and then copy it to the graph screen using int("JJ. Then e^( will draw on this background.
-
I definitely like these additions! Number three is fine (to me), and the other two are great!
-
I like the fast 16x16 grid and int("JJ thing. That'll be helpful for the game I'm considering doing, though I don't wanna say anything about it yet.
-
I'm glad people are voting "yes" for these features. To that end, upon further planning, I've had to make a couple of adjustments to imporve this further:
1. int("H1 and int("H2 are completely unnecessary, Correlation will automatically detect 8x8 and 16x16 fonts
2. 6x8 fonts will always be drawn to the homescreen and requires int("JJ to draw it to the graph screen. However, if you use int("HN (meaning Homescreen NO), 8x8 fonts and 16x16 will draw to the graph screen instead of the homescreen, even though they still use 6/12 columns and 4/6 rows. This makes int("JJ unnecessary, and also allows XOR, OR, AND and MASK, which cannot be done on the homescreen. Drawing to the graphscreen directly doesn't slow things down, and indeed is faster than int("JJ
-
Attempt #1 at speeding up Ln( -- failed.
:banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead:
Okay, so Attempt #2 should not take nearly as long, which will speed up Correlation progress if it works. Attempt #2 will be changing the way displaying to the screen works:
1. As always, you can choose to not show text on the screen until you are done drawing completely. With this mode, as always, you can use all features, such as map mode.
2. BUT, you might want text, such as single characters, to display immediately, which is faster than updating the entire screen just for one character of text. This mode was always available in Correlation, but this time, NO FEATURES will be available except for bitmasking, animated text and negative coordinates for e^(. No lowercase letters, no word wrap, no map mode, etc. ln( will be fixed at wrap mode, and e^( will be fixed at clip mode.
You can switch back and forth between these two as many times as you want, as always.