Omnimaga
Calculator Community => Other Calc-Related Projects and Ideas => Topic started by: Builderboy on September 01, 2010, 02:54:09 pm
-
So i was inspired by SourceCoders'
broken Basic Optimizer function, and i thought about making one on the calculator, so you could optimize your Basic Programs without having to transfer them to the computer for any utility. I quickly wrote up some code in Axe, and the optimizations have started :) Currently it has support for:
Ending Parenthasis
Ending Quotes
Devlar
Powers of 10
Squared and Cubed optimizations
And there is plans and psedocode for
Implied multiplication
=0 into Not(
Negative/Positive cancellation
any other ideas of simple find and replace optimizations that i could put into the optimizer? Obviously i cant do some of the complicated stuff, but there are some good simple replacements that can make a big difference. And note that it ignores Strings completely :) Strings Should not be changed ^^. And there also might be an option on whether to erase empty lines or not. Some people like to keep them for readability during development, and then maybe want to take them out later.
-
Ooh, good idea.
Another one: .01 or /100 into sub(.
EDIT: And if it's possible, a logic simplifier.
EDIT2: 403 Forbidden
-
what do you mean sub(.? And what do you mean by a logic simplifier? ;D
-
Oh, just sub(, as in like how sub(1 returns 0.01. The period was just for grammatical purposes ;D
And by a logic simplifier, I mean the kind that automatically turns A and B or not(A into A or B. They're not very hard to code. The hard part is getting them to recognize A and B in a statement.
EDIT: 404 Not Found
-
Wow i didnt know about that XD Sounds good :)
And i'll have to see if i can get the logic simplifier to work, it might be tricky but i think i *might* be able to get it working. i will have to do some research
-
And i'll have to see if i can get the logic simplifier to work, it might be tricky but i think i *might* be able to get it working. i will have to do some research
I think HarrierFalcon or Weregoose had a really good one somewhere. Can't find it now, but here's a copy I have (edited a bit):
:ClrHome
:Input "LOGIC IN
A & B: ",Str1
:DelVar C
:ClrHome
:Disp " A","
0 1"," +---",
" 0!","B !"," 1!
:For(A,0,1
:For(B,0,1
:C+not(expr(
Str1)))10^(2A+B→C
:Output(2B+4,2A+
4,not(not(expr(S
tr1
:End
:End
:Pause sub("0
not(A or BB B
or not(AA and no
t(Bnot(B A or B
1 A and B not
(A xor BB and no
t(Anot(A A A
or not(BA xor B
not(A and B",1+6
4fPart(Ans/16),4
EDIT: This one's a homescreen program that takes as input a logic statement in A and B, but it can probably be changed to do it in a program.
EDIT2: The program's also compressed by that idea of dividing a binary number as a decimal number by a hex humber (what's that called, anyway?), so it might be kinda hard to read, but basically, a sequence of TRUE and FALSE values is stored directly as a decimal number (such as 1011), then divided by 16 (or 64 in this case, since each entry in the string is 4 tokens long). The fractional part multiplied by 16 is always different, so the weird order's based on that.
EDIT3: Sorry if this is confusing. I'm really, really bad at explaining things.
-
Thats really cool! Hmm it might be very tricky to implement tho, since it would have to do some pretty weird calculations to determine A and B, and if 1 expression is equivalent to another. And it only works if there are 2 expressions present in the logic line.
For now i think im going to stick to simple find and replace, then go into more detailed optimizations. Maybe things like reordering expressions so that expressions with more parenthesis are at the end of the line. Like optimizing
Dim(L1)+1
to
1+Dim(L1
-
Another good one would be to auto-expand calculations if they are factored (ex. 5(B+3)+A-(5+W)=5B+15+A-5-W=5B+A-W+10).
But this is a cool idea :) Will really help some people.
@Deep Thought
I've noticed lately that when you're posting code that there appears an empty code box and then the code itself below the box. Is there any reason for that or am I the only one experiencing it?
-
Another good one would be to auto-expand calculations if they are factored (ex. 5(B+3)+A-(5+W)=5B+15+A-5-W=5B+A-W+10).
But this is a cool idea :) Will really help some people.
@Deep Thought
I've noticed lately that when you're posting code that there appears an empty code box and then the code itself below the box. Is there any reason for that or am I the only one experiencing it?
Yeah, it's on purpose since I occasionally need to use something like 10^(, which wouldn't show up well in code tags.
-
Ah ok. The empty code box just looks weird so I thought it might have been some kind of error happening.
-
Another good one would be to auto-expand calculations if they are factored (ex. 5(B+3)+A-(5+W)=5B+15+A-5-W=5B+A-W+10).
Thats also a good idea, i will have to see if its doable. Sometimes it wont actually result in less tokens tho, so i will have to remember that. Also i would need to write a number to token converter, working with all these tokens is tough business :P
-
It doesn't? I thought it always did, at least for me it always has. What's a situation where it doesn't?
Don't you already have one sorta since you were working on that on-calculator program editor?
-
Another good one would be to auto-expand calculations if they are factored (ex. 5(B+3)+A-(5+W)=5B+15+A-5-W=5B+A-W+10).
Thats also a good idea, i will have to see if its doable. Sometimes it wont actually result in less tokens tho, so i will have to remember that. Also i would need to write a number to token converter, working with all these tokens is tough business :P
For the num>token thing, I think you can first display it on the screen (with >Dec), then get the tokens from TextShadow (I think it's L5).
-
Something like 99(99+A would distribute into 9801+99A which is 1 more token :( And thats a really clever idea with the Screen trick! Im going to go put that in my subroutine :)
-
Yeah, auto-expansion might not be a good idea, since most factored expressions are shorter than their expanded forms :P
Something like 99(99+A would distribute into 9801+99A which is 1 more token :( And thats a really clever idea with the Screen trick! Im going to go put that in my subroutine :)
Remember to change the screen immediately afterward, or else the user's gonna get confused by random numbers on the screen :D
-
Ah, ya. Hmmm, what you could do is maybe have it some how check how many tokens are used and then after and put which ever is more efficient or something. I don't know, but good luck :D
@Deep Thought
It's actually probably about a 50-50 chance that the shorter one will be smaller or larger, I think anyways. I mean until Builder just gave that example I had never seen one that wasn't smaller.
-
Yep, good luck. And another optimization idea: removing =0 from If statements (doesn't always work, though, so it should count the number of parentheses as well).
-
you mean =1? I already have plans for optimizing =0 into not(, but like you said, i will need some expressions detection. As for expansion, it doesn't seem to be *to* beneficial on average, so im going to leave it out for now. But i might put it in later. Also im doing the easy stuff first :P
-
you mean =1? I already have plans for optimizing =0 into not(, but like you said, i will need some expressions detection. As for expansion, it doesn't seem to be *to* beneficial on average, so im going to leave it out for now. But i might put it in later. Also im doing the easy stuff first :P
Whoops, typo.
Also, remember to delete ending braces and brackets as well.
-
ah yes, good catch :)
-
Does your program recognize closed strings already? Like for "Hello, worl"+sub("abcde",4,1) would it take off the last parenthesis? Just in case :)
-
This is pretty cool! :) Will it possibly be able to auto optimize Axe programs too?
-
Axe sources don't need to be optimized like BASIC programs, since all that matters is the executable anyway, and optimizing the source to make the executable smaller would probably be extremely hard.
-
So i was inspired by SourceCoders' broken Basic Optimizer function, and i thought about making one on the calculator, so you could optimize your Basic Programs without having to transfer them to the computer for any utility. I quickly wrote up some code in Axe, and the optimizations have started :) Currently it has support for:
Ending Parenthasis
Ending Quotes
Devlar
And there is plans and psedocode for
Implied multiplication
=0 into Not(
Powers of 10
Negative/Positive cancellation
any other ideas of simple find and replace optimizations that i could put into the optimizer? Obviously i cant do some of the complicated stuff, but there are some good simple replacements that can make a big difference. And note that it ignores Strings completely :) Strings Should not be changed ^^. And there also might be an option on whether to erase empty lines or not. Some people like to keep them for readability during development, and then maybe want to take them out later.
Might I request that you crosspost this to Cemetech, both so we can discuss this idea, and moreover that we can talk about you helping me improve SourceCoder's optimizations? I can't fix it if people don't tell me to my face that they're unhappy about a feature.
-
I thought that was hiding under the carpet though :P thats why i was asking about bug reports. Either way, i didnt start this because im dissatisfied with Sourcecoder, i just was inspired by it. Also where should i put my post, in projects or Sourcecoder?
And yeah Deep Thought, it recognizes that the last token is not part of a string and so it removes it :)
There are some simple axe optimizations that could be done, but they are few, i'd have to work with axe a lot more until i am as comfortable in it as i am in Ti Basic.
-
I thought that was hiding under the carpet though :P thats why i was asking about bug reports. Either way, i didnt start this because im dissatisfied with Sourcecoder, i just was inspired by it. Also where should i put my post, in projects or Sourcecoder?
And yeah Deep Thought, it recognizes that the last token is not part of a string and so it removes it :)
There are some simple axe optimizations that could be done, but they are few, i'd have to work with axe a lot more until i am as comfortable in it as i am in Ti Basic.
Start with Projects, then we can extend it to SourceCoder as necessary. :)
-
Alright, its done :)
I also just had an idea for an obscure optimization: Output(#,#,"# can be optimized to Output(#,#,# :) But only for single digit cumbers and only for Output, not Disp. Its small and obscure but the more the merrier ;D
-
"cumbers"? lol
And Text( too. And if you really wanted to, you could simplify obvious ones like *3*5 :D
But what about those times when people purposefully bloat their code to make it run faster?
-
hmmm i dont think any of these specific optimizations will result in slower code. Those types of optimizations are very in depth and hard to detect so i dont think i will have to worry about them. If it does become a problem i can have it as an option :)
-
Alright ladies and gents, this is the moment you've all been waiting for! I am releasing a beta of the Optimizer App :) Feel free to try it on all your programs and test them out to make sure i didnt break them XD Im also including the source because it has a really handy program browser built into it and that was very difficult to make. Props to Buckey for all the help he gave me with the Vat entries! ^^
These are the codes it optimizes in this version:
Ending brackets, braces, and parentheses
Powers of 10 and other large constants
Squared and Cubed
Eliminating Empty lines
Delvar
Negative/Positive canceling
And here is a screenie of it in Action!
-
Wow that is awesome! :) Great work. I'll try to test it out if I can. What made you want to make it as an app? Size or just because it seemed appropriate?
-
got to go save a few thousand bytes :D
*happybobjr thinks you should get noticed for your work. maybe ask in a readme for credit on optimization. because this is so great for basic...
note: maybe you can have it replace words in a string. such as, "and" with "and" but this time from 2nd math right 1
or If... or... else.. and so on
-
That one could be tricky to do since the word "and" and the command and_ are different in length and such. It would all depend on how it is being used and where and such.
-
If you don't mind, I signed your program so it can go on a real calc instead of an emu.
-
WOW this is just awesome! I didn't thought someone would actually ever make that possible on-calc. Great job Builderboy! I wonder what other kind of optimizations could be achieved on-calc with such program if more were to be implemented. I should run Illusiat 13 through this ;D
Does it do Axe too?
EDIT: Test with an Illusiat 13 prog. 43 bytes optimized :P. I haven't checked if it worked 100% properly, though.
-
Cool project! I just skimmed over but were those fancy boolean functions mentioned? I mean like;
If K=24
Then
X+1->X
End
If K=26
Then
X-1->x
end
which could be:
X+(K=24)-(K=26->X
Second, not to be rude or anything but isn't celticIII better suited for this? I mean with the "linereplace" command and the "hextobin" command and all, surely it makes recognising tokens easy...
Axe on the other hand is far faster which is a big plus on large progams (which they tend to be or the couldn't be much optimized)
-
Yeah the issue is that with Celtic III it would be much slower, due to the BASIC commands used alongside with Celtic. As much as you don't like Axe much, Axe and z80 ASM are much more faster for optimizing large programs. I would like to see someone come up with a similar tool in Celtic III or Doors, though. However I fear it will take minutes to optimize a massive program like in my screenshot.
-
Yeah, not only would Celtic3 be a *lot* slower, but it is actualy not any easier to read tokens. It's very easy to read tokens in axe, since most all tokens are just a single number. So not only would it be faster in axe, but you also wouldn't need two or more programs to carry around.
And thanks happybobjr for the signed app, I forgot to sign the app once again XD I made it an app just because it seemed appropriate for this type of program. And so that it would be completely safe if I messed up when I'm working with the vat :P
as for the Boolean optimizations, it hasn't been implemented yet, but a primitive version is being planned :)
And that's an awesome optimization on Illustat! :D although it might be mostly linebreaks if you use them to organize your code.
-
Well from what this supports now I am happy to see I am an efficient programmer :D I think there was only a total of 6 bytes that I could save total and those were programs I made a long time ago before my time at Omnimaga :P
-
Wow, it works! That is an awesome program!
If you don't mind, I signed your program so it can go on a real calc instead of an emu.
An idea to fix that: Optimize strings like that only if the line starts with Disp ". That way, there's no way tokens can be counted.
-
Well it automatically detects which tokens are inside of a String and which ones are not, so there is no problem there. And yeah, that does sound like a good idea for the next version :) So on track for the next version we have:
=0 into Not()
Implied multiplication
String character optimization
-
Does not( always work? I don't know why I'm asking since I use that every time, I just thought I saw someone say there are times when you do need ...=0 or 0=.... I may just be misremembering though.
By the way, what do you mean by Sting Character Optimization?
-
how about conditional optimization? i know it's a step, but something like this:
If A=3 or A=6 or A=9 or A=2394
into..
If max(A={3,6,9,2394
it's probably harder to code because you change the actual code quite a bit. also, there might be some times where the former is faster than checking against a list
-
The Not() trick only works if the =0 is at the end of the expression, that way the parenthesis can be taken off the end, hence the optimization. I *believe* that in all times where the =0 is at the end, the not() optimization should work, but i will have to run some more tests.
As for the String Character Optimization, i just mean optimizing the lowercase letters like " and " into the single token " and ". Which yields a 7 byte optimization :O
EDIT: And the conditional optimization is a good idea, it may be very specific however. As in it may not always catch the optimization.
-
Oh ya. But can't A=0 and 0=A both be optimized to not(A?
Ah ok. Makes sense. Just have to be careful with that one so it searches for "and" plus a space instead of just "and."
Either way, good luck on future progress :)
-
Right, which is why it will have to be a tricky program to write. I shall have to see how well it works out. Although it is only a 1 byte optimization.... hmm we shall see
-
Yeah, not only would Celtic3 be a *lot* slower, but it is actualy not any easier to read tokens. It's very easy to read tokens in axe, since most all tokens are just a single number. So not only would it be faster in axe, but you also wouldn't need two or more programs to carry around.
And thanks happybobjr for the signed app, I forgot to sign the app once again XD I made it an app just because it seemed appropriate for this type of program. And so that it would be completely safe if I messed up when I'm working with the vat :P
as for the Boolean optimizations, it hasn't been implemented yet, but a primitive version is being planned :)
And that's an awesome optimization on Illustat! :D although it might be mostly linebreaks if you use them to organize your code.
Well I may be good at designing games, but I am not that great at optimizing. From early 2005 to 2009, I hardly coded new games, or just coded small stuff. As a result, most tricks I knew were rudimentary. I optimized I13 more than any other game I made, though.
EDIT: If I compare with another program, on Illusiat 6/Nemesiat launch program, which is roughly 5 KB, I got 51 bytes of optimizations :P
-
This is really cool! Did you use any assembly code? Its seems like a very useful project.
-
Ti connect gives me a transfer error because of a error in the app's signature.
USB Communication Error: Flash application has a bad signature
{8C08002D}
-
This is really cool! Did you use any assembly code? Its seems like a very useful project.
Looking at the source code in SourceCoder it doesn't appear so, but I could be wrong. Just skimmed it.
-
Ti connect gives me a transfer error because of a error in the app's signature.
USB Communication Error: Flash application has a bad signature
{8C08002D}
did you try the version posted by happybobjr on an earlier post? He signed that one: http://www.omnimaga.org/index.php?action=dlattach;topic=4300.0;attach=3121
-
Yeah it's pure axe :) and yeah I forgot to sign it again x.x the one posted by happybobjr should work
-
I love being able to do something useful :)
-
From the screenshot, it seems like the progress bar is moving really slowly. Seeing how much faster Axe got (and the pixel-change examples DJ made here (http://ourl.ca/6861/114165)), it might be faster if you updated it less often.
-
It's not the display that is moving slowly. It's because the file DJ ran the app through was so large (over 14KB if I saw correctly). The time it takes to finish all depends on how big the file is.
-
Well its not lightning fast optimizer :P I did increase the interval and it was noticeably faster however, so that is a definite plus :)
EDIT: Ninja'd, and meishe makes a good point :P It took 14 seconds to optimize that file, so it runs at about 1000 tokens per second, which is pretty repecable if i do say so myself :P It will get faster in the next update however, as i am implementing short circuit logic.
-
sorry, but how much longer untill the next update?
I am just excited for this as I m for axe.
* Would it be too hard to ignore the :: at the beginning of a MOs game? I noticed it was fine for ::DESCRIPTION but w/o the description, it removes a :.
-
Ah good idea, i also have to get it to ignore Axe programs (for now! >:D) or else it might 'optimize' them so that they didnt work XD
As for a next update, hopefully sometime this week :) I shouldn't be too busy
-
Well for an optimizer I think any speed would be acceptable considering how useful they are :) (I just mean if I had a program that was really large and didn't want to go though and find this stuff myself I wouldn't mind waiting a little bit.)
1000 bytes per second? That's not bad at all :) What is short circuit logic?
-
Ah good idea, i also have to get it to ignore Axe programs (for now! >:D) or else it might 'optimize' them so that they didnt work XD
As for a next update, hopefully sometime this week :) I shouldn't be too busy
hummm. i haven't tried to do an axe source code... I was afraid of it doing something wrong. I was getting some errors, i deleted all doors app variables and reset ram though, and everything was fixed. (The errors were popping up with doors' basic editor.)
Ninja'd on something... I'll soon see
Edit: Note: Random: Hi: have you ever noticed we have devil >:D smilies, yet we don't have any of Christ to ward off the demons...
-
Oh, wow, forgot about how big the game was. Well, that is fast :)
-
Ah good idea, i also have to get it to ignore Axe programs (for now! >:D) or else it might 'optimize' them so that they didnt work XD
As for a next update, hopefully sometime this week :) I shouldn't be too busy
hummm. i haven't tried to do an axe source code... I was afraid of it doing something wrong. I was getting some errors, i deleted all doors app variables and reset ram though, and everything was fixed. (The errors were popping up with doors' basic editor.)
Ninja'd on something... I'll soon see
Edit: Note: Random: Hi: have you ever noticed we have devil >:D smilies, yet we don't have any of Christ to ward off the demons...
Well this isn't meant for Axe programs. That's why I think he is gonna make it skip them.
-
Short circuit logic is something i am going to post about in the Axe topic shortly, but basically its this, say you had an if statement:
If A and B
and if A happens to equal 0, the program doesn't even evaluate B, because it knows that there is no way for the statement to be true. This is *faster* if A is false a lot of the time, because that means that B is not even evaluated most of the time. So for my program, every optimization has a trigger token that needs to be present for the optimization to happen. First, it checks to see if the current token is that token, if its not, it just moves on and doesnt do any more math. If it IS however, thats when you start checking for more tokens around it. You can do this for OR too:
If A or B
if A happens to be true, the program doesn't even evaluate B again, because it knows that no matter what, the expression cannot be false.
Now, i dont know if Axe does something similar to this, but there are ways to Program it in, for example.
If A and B
Code
End
becomes
If A
If B
Code
End
End
and
If A or B
Code
End
becomes
!If A
Goto L
!If B
Goto L
Code
L
(And i might not skip axe programs in the future ;) )
-
Ah good idea, i also have to get it to ignore Axe programs (for now! >:D) or else it might 'optimize' them so that they didnt work XD
And optimizing it in a way that creates an error the compiler doesn't catch would be very, very bad :)
-
Very Very Very bad. Although i currently cant think of any optimizations that would break it so badly :P Right now i think any problems would probably just be syntax problems. And it would erase all the empty lines, which actually doesn't to anything to the axe programs at all XD
-
Well, remember order of operations is different in Axe :)
-
Ah yes thats true, hmmm. Well nothing currently messes inter-expression, but in the future it will definetaly be breaking-esk. Also, if i ever do implement an Axe optimizer, it wont be able to tell you how many bytes it optimized unless if had a byte table for all the expressions and their equivalents. o.O
-
Well, remember order of operations is different in Axe :)
the main reason i didn't try it
* going to find the biggest basic games in ticalc.org to see size of optimizations.
*Ninja'd on something
-
Ah ok. So basically it is just when you are putting the variable that is most likely to be true or false, depending what you are doing, as the first variable? I never thought about that, that could be handy :)
-
Ah ok. So basically it is just when you are putting the variable that is most likely to be true or false, depending what you are doing, as the first variable? I never thought about that, that could be handy :)
Wow, that's a great idea! Thanks!
-
I know java uses it and its really really useful for checking lists. Because that way you wont get an error for going out of bounds!
If I>=0 And L1(I)=44
If I is less than Zero (throws an error in java) the second part wont be evaluated and so there will be no error :] makes me feel warm and fuzzy inside ^^
-
If I is less than Zero (throws an error in java) the second part wont be evaluated and so there will be no error :] makes me feel warm and fuzzy inside ^^
Oh yeah, I noticed that. Then I switched to TI-BASIC and had to add another If statement :P
-
Edit: Note: Random: Hi: have you ever noticed we have devil >:D smilies, yet we don't have any of Christ to ward off the demons...
We use nethams over here instead.
Also keep up the good work on this Builderboy. I wonder how hard Axe support would be to add? Also are you gonna make your optimizer detect if a For loop has no closing parhentesises it gets closed if it contains a lone if instruction? That TI-OS glitch makes things so slow x.x
-
Well that might be hard to detect since it only affects the speed when the statement is false.
-
never use axe programs.
think about
If getkey(7)
then it will be If getkey(7
big no no
-
Right, that'd be a problem. That and the other commands that need the last parenthesis. And remember implied multiplication doesn't work.
-
So i had a great idea! Why not use InData() to search for trigger tokens in the program to be optimized? I tested an 8000 bytes file and it could search through the entire file in less than a second! This means possibility for lightning fast optimization!
-
So i had a great idea! Why not use InData() to search for trigger tokens in the program to be optimized? I tested an 8000 bytes file and it could search through the entire file in less than a second! This means possibility for lightning fast optimization!
Wow 8000 bytes in less than a second...thats insane
Edit: By the way, when's an executable coming? I think it seems to work well enough for a release.
-
Hmm i just have to remember that using this method ignores strings, so that when i find a token to optimize, i will have to search backwards in the file to determine if its inside a string or not. This also makes the loading bar a lot harder to implement since all the time spent searching will be spent in a single command. Hmmmm i shall see how fast everything is
-
Ok that's fine but at that speed would there even be need for a loading bar?
-
Wow that sounds promising, you should try it!
-
Im trying it right now :) And yeah thats a good point XD if it takes more than a few seconds ill just have a loading message, or a small animation
-
Wow, that is FAST!
And 8000 KB/s is about twice Axe's speed, so yeah, a loading bar is probably not needed. A loading message should be fine, and personally, I think a percentage counter is a good idea, just so that people optimizing a 20 KB program wouldn't think it froze after 2.5 seconds. Doesn't matter two much, though.
EDIT: Can I have a demo just for a quick test?
EDIT2: Wow, I meant 8 KB/s. If it were 8000, that'd be absolutely amazing for anything Z80 :P
-
I wonder if your program can manage to optimize stuff such as (A-B)*5->C to 5(A-B->C ?
-
Unfortunately no form of percentage can be calculated D: but i think it will be fast enough :) Currently i have no real working code however so i cant give anything out :P I did document all the optimizations i currently am implementing and they are up to 12 :)
As for the (A-B)*5->C, it currently isn't smart enough to do things like that, and i imagine getting it to the point where it can recognize expressions like that would be crazy hard to do, but if i figure out a way to do it, hells yeah i will :)
-
Ok, well good luck if you plan to add them ^^
-
Garrg, so there are a lot of sneaky things happening now :P So InData stops as soon as it finds a 0, since thats the definition of the end. BUT what about 2 byte tokens? for example Str1 has a 0 as its second byte, so the optimizar treats that as the end of the program. So now before it parses the program it goes through and changes all the 0's into 60, which is unused in all two byte tokens. Then when the program is finished, it goes back and changes all the 60's back into 0's. lol
EDIT: Grrr but that means that it would mess up hacked variables. Hmmm i will have to think about this some more...
EDIT2: Yay got it to work, if it quits and it finds that its not at the end of the file, it scratches its head and turns around and goes back into the search loop ^^
-
Wow, that is really cool about the InData speed :) And glad you got things working right now :D Good luck with the rest of this and can't wait for another demo ;D
-
Nice that you got it sorted out.
-
so release date?
sorry, i am just so excited about the prospect of not having to optimize my DrugAdventure3 game that i am about to finish.
I made it just to make everyone mad. (it has over 50 different labels, and tons of goto's
-
so release date?
sorry, i am just so excited about the prospect of not having to optimize my DrugAdventure3 game that i am about to finish.
I made it just to make everyone mad. (it has over 50 different labels, and tons of goto's
You can always use SourceCoder, you know? ;)
-
Yeah true. I think he absolutely wants to try Builderboy's program too, though :P
-
Sourcecoder produces some incorrect optimizations right now, but there is a demo version of the optimizer a couple pages back, have you tried that one?
EDIT: BLARG my optimizer ran amuk and deleted half my source :( And i didnt notice and went to compile and it backed up the corupted version :'(
-
This really sucks. I hope you don't give up on the project though, it was really awesome :/
Sorry to hear.
-
Its ok, i have rewritten the 500 bytes lost and its now better than ever :D
-
I hope it doesn't happen again, though. I had about 4 RAM clears in a week on Metroid II Evolution near the end of development, because sprite clipping at the top of screen didn't work.
-
did it happen again, you said on omnom that you lost 1000 bytes now. and 500 was half of it
-
Nah he just cross-posted it on the forums.
-
Great that it works :)
Maybe as a feature request have a token-based inData(?
-
so, ummm.... how's this project going?
Is there going to be an update soon?
* there has only been one demo released, right?
-
Yeah so far only one demo. The current version right now is very buggy, and im starting to wonder if the speed increase is worth the incredibly tricky coding D:
-
Is the speed increase really signifiant? If not maybe it might be better to not complicate things too much, unless it's incredibly slow otherwise.
-
remember to backup progress, if it gets extremely complicated then consider about the advantage this will have otherwise, keep trying i think...
-
I don't feel that the first one was slow.
Make sure you keep each revision of your project on your computer. that way if there is a problem, you can go back
or if someone liked an older build, the could use an older build
-
*bump*
how's progress going?
-
Is the speed increase really signifiant? If not maybe it might be better to not complicate things too much, unless it's incredibly slow otherwise.
IMO, size is more important than speed in this case. After all, it's an optimization program.
-
Ya, I mean it's already doing the work for you so why make a big deal if it take a little bit?
-
And even if it does, an extra half-second doesn't matter much ;) So how's this going?
-
Slowly, i have decided to revert back to my original design, the newer one was just too unreliable and finicky to mess with. And all the weird exceptions were making it just as slow as the original anyway
-
Sorry to hear D:
Does it do new optimizations, btw?
I'm glad this is still progressing :)
-
A couple small ones, but nothing extreme
-
Ah ok I see. What are you planning next?
Or are you planning to work on Portal X/Serenity more? ;D
-
Definetaly work on PortalX some more and do some more Planning for Serenity. Im also working on a secret non-calc project but ill post about that if it actually gets past planning stages.
-
Cool! Can't wait to see progress and more info about the secret project :D
-
Definetaly work on PortalX some more and do some more Planning for Serenity. Im also working on a secret non-calc project but ill post about that if it actually gets past planning stages.
Is it calculator related or something completely new and straight computer stuff?
-
From what I remember, it is calc related, but I forgot what it was x.x
-
Non calc unfortunately, and it had it's inception several days ago, so nobody knows about it :P
-
oh ok. Didn't you have a secret calc project in the works too? I think it was a team project. Not sure anymore.
-
Oh yeah me and Eeems had a project we were working on together, but my small knowlge of asm and the large scale ambition of the project kinda killed it :(
-
Oh sorry to hear :(
I hope your other projects won't know the same fate as that project and Castle Storm II.
-
What was the project with Eeems?
-
*blump*
How's this project going?
-
It looks good, by the title =P
-
Actually i was just working on it :D I have a new version to release for you guys to test out ^^ its in program form this time so it doesn't need signing ^^. New optimizations include:
Implied multiplication optimization
More parenthesis optimization
If:Then one line optimizations
Also it now recognizes Axe programs and refuses to optimize them, so that is good :) It also still does not try to optimize archived programs, they must be in RAM, although they still show up in the menu for now. In the future they will be removed ^^
-
Actually i was just working on it :D I have a new version to release for you guys to test out ^^ its in program form this time so it doesn't need signing ^^. New optimizations include:
Implied multiplication optimization
More parenthesis optimization
If:Then one line optimizations
Also it now recognizes Axe programs and refuses to optimize them, so that is good :) It also still does not try to optimize archived programs, they must be in RAM, although they still show up in the menu for now. In the future they will be removed ^^
Nice :)
-
Sounds great! How'd you get it so much smaller than before (seeing as it's now a prgm)?
-
great!
-
Lol i didn't make it smaller actually, before i just made it an app because it seemed appropriate for the type of program that it is :P Anybody run into any bugs?
-
uploading right now.
-
Oh Crap, Broke my calc...
Bug.. created by my stupidity.
If you chose to compile MENU
Then run the output, AXE
then exit.
When going into your apps, Everything is Finance... App.
Ram Clear Doesn't fix it.
Garbage collect doesn't fix it.
Uh oh....
-
O.o What did your program do? Could you post the code?
-
no, it was one of the included in the latest update.
http://www.omnimaga.org/index.php?action=dlattach;topic=4300.0;attach=3956
-
Oh Crap, Broke my calc...
Bug.. created by my stupidity.
If you chose to compile MENU
Then run the output, AXE
then exit.
When going into your apps, Everything is Finance... App.
Ram Clear Doesn't fix it.
Garbage collect doesn't fix it.
Uh oh....
Wow weird
-
ugg should have mentioned compiled code is OPTIMIZER and the code to compile is the one with the theta :X Is your calc ok? do any apps show up in the memory menu?
-
ugg should have mentioned compiled code is OPTIMIZER and the code to compile is the one with the theta :X Is your calc ok? do any apps show up in the memory menu?
Ya my calc seems to be fine other than that...
It's going to get annoying and i don't want to risk bringing my calc down to scratch with all my projects going on right now.
The apps show fine in the memory menu.
Its only in the apps menu its screwed up.
Don't worry, I hold nothing against you. (its probably better for it to happen to me than someone else ;) )
-
Try sending the stuff you got to your computer or something so you dont lose anything, then do a full mem reset. If that still fails you may have to reinstall the OS.
I am surprised a program could crash the calc this bad when Axe is not even supposed to be able to write to Flash in Axe executables tho...
-
all it does is change the apps names in the app menu.
they still are what they are (have correct name in memory menu.)
-
No other problem occurs, right?
-
Oh, in that case, happybobjr, your VAT probably just got messed up. No Flash stuff :) No idea how to fix it, though.
-
No other problem occurs, right?
nope, just that ;)
-
Ah ok. It seems a bit like the VAT screw ups when you use Virtual Calc in Omnicalc then archive a program of the same name in one calc then go in the other calc and delete it x.x
-
Try removing and then reinserting the backup battery. If that still doesn't work try to do a garbage collect or defragment because those rebuild the app menu I think. I had the same problem when I was figuring out how to add apps to the menu after creating them in Axe. I think Axe uses the rebuild code too so if you try to compile any program as an app in Axe then it should regenerate the table for you. This is all assuming the problem is what I think it is... but definitely back up stuff first.
-
ya, but now after reinstalling ti-connect. Nothing transfers correctly....
-
Ouch x.x
I am not sure how could a RAM program bricks a calc, though. I think you'll need to wipe the entire memory or reinstall the OS. Then if it still fails, report your calc to BrandonW or something
-
Ouch x.x
I am not sure how could a RAM program bricks a calc, though. I think you'll need to wipe the entire memory or reinstall the OS. Then if it still fails, report your calc to BrandonW or something
no, ti-connect is what is screwing up, i uninstalled and reinstalled ti-connect and it works again.
I deleted a couple of apps and reinstalled the os and it works again ;).
I should have checked after the deleting of an app so i would know which would fix it... (dumb me)
-
Oh OK, glad to hear it works. TI-Connect can act weird sometimes, especially with USB/silverlink transfers (I never got much issues over serial link except sometimes when it did not detect my calc)
-
thats kinda what was happening.
It would detect my calc. but half way through install, it lost connection it told me...
-
Wait, you didn't let your calc connected during installing I hope? That can permanently prevent TI-Connect from being able to detect your calc again afterward, even after a re-install. You must not connect the calc until TI-Connect is installed.
-
no, its all good now. I had to uninstall and run ccleaner. reinstall and connection is completly fixed.
-
thats kinda what was happening.
It would detect my calc. but half way through install, it lost connection it told me...
Happened to me too. It was annoying :P
no, its all good now. I had to uninstall and run ccleaner. reinstall and connection is completly fixed.
What's ccleaner?
-
no, its all good now. I had to uninstall and run ccleaner. reinstall and connection is completly fixed.
What's ccleaner?
The best c drive cleaner ever made.
And the best registry cleaner ever made.
And its free :)
And It is completely legitimate.
http://www.piriform.com/
-
Yeah I always got scared of CCleaner years ago because when I went on sites, it bugged me to install it, so I could no longer trust which site that had it for download was legitimate anymore.
-
well the link i provided was legitimate.
If you think it might not be trustworthy, you can use sandboxie :)
If you do download it, try the regisrty cleaner it provides. You will be amazed.
Edit: For typos
-
No I didn't meant that link was not legit, I meant several years ago I was given over 9000 links to different locations of CCCleaner and I started not trusting them, because one copy (which was on ccleaner.com or something) installed full of junk on my comp. CCleaner would be very handy for my old comp.
-
So just a note to people using my program, unfortunately there is a logic bug in one of the optimizing branches, and so it will BREAK some basic programs that it tries to optimize, i recommend against using the optimizer on ANY program at this point, the bug is being fixed and a new version should be released in a bit
-
It optimizes like sourcecoder, but on calça?
Writing in a phone LOL
-
Exactly ^^ it's broken right now though so don't use it D:
-
interesting, i never ran into that bug.
-
well the link i provided was legitimate.
If you think it might not be trustworthy, you can use sandboxie :)
Sandboxie's excellent, but it's not perfect. Virii can still get into your system even if they're in the partition.
-
It usually is only triggered by using custom lists, although there is another bug where if you have this:
If Blah
0->A
it will do the Delvar optimization, which doesn't work in this case
-
Good luck fixing the bug! Glad this is still under production. :)
-
Great! This can be very helpful for on calc dev.
When you fix that bug, which I don't understand yet, I'm gonna use it for sure!