Author Topic: Axe Parser  (Read 553198 times)

0 Members and 3 Guests are viewing this topic.

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Axe Parser
« Reply #555 on: May 10, 2010, 12:50:10 pm »
My suggestion would be that you use one routine for each calculator speed. If the program is compiled to run at max speed, insert both routines and if the person runs the game on a 15 MHz calc, it will call the 15 MHz grayscale routine instead of the 6 MHz one. If the game is made to run at 6 MHz the entire time, then during compiling, just include the 6 MHz routine. It might increase file size in the former case, but It seems like it's the only real way to do it.

Quality-wise it was ok for me, altough I could understand that for complex games it might flicker way too much and be hard to keep in sync.

That said, nice to see a new update, though, altough I had 0.2.3 for a day or two, already :P (altough it wasn't finished yet)

Offline Quigibo

  • The Executioner
  • CoT Emeritus
  • LV11 Super Veteran (Next: 3000)
  • *
  • Posts: 2031
  • Rating: +1075/-24
  • I wish real life had a "Save" and "Load" button...
    • View Profile
Re: Axe Parser
« Reply #556 on: May 10, 2010, 01:58:35 pm »
I'm talking about the draw routine itself, the DispGraphr routine.

I think I will use separate routines for each speed.  You'll basically never use both of them in the same program anyway, so it can only save size and speed.
___Axe_Parser___
Today the calculator, tomorrow the world!

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Axe Parser
« Reply #557 on: May 10, 2010, 02:03:18 pm »
Yeah I was talking about that draw routine too.

By never using both of them, do you imply that if we compile a 15 MHz game, that game will not run at all on a 6 MHz calc or vice versa? In that case, I guess authors will have to make sure to never forget to compile two copies of their games before release: one for 83+ users and one for SE users, for authors who want their game to run on all models but run at full 15 MHz speed on faster models

Offline Quigibo

  • The Executioner
  • CoT Emeritus
  • LV11 Super Veteran (Next: 3000)
  • *
  • Posts: 2031
  • Rating: +1075/-24
  • I wish real life had a "Save" and "Load" button...
    • View Profile
Re: Axe Parser
« Reply #558 on: May 10, 2010, 02:06:44 pm »
If you make a 15MHz-only game, it wouldn't be compatible on the regular 83+ anyway, so there would be no reason to make separate versions.  Otherwise, you would just use the 6MHz gray for both.
___Axe_Parser___
Today the calculator, tomorrow the world!

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Axe Parser
« Reply #559 on: May 10, 2010, 02:14:27 pm »
Well, sometimes, people want to make a 15 MHz game, but still allow people to play it on regular 83+ too, even if it means less enjoyable gameplay.

An example of this is Axe Tunnel, Super Mario Smash Dance, Metroid II: Evolution and to a lesser extent, Illusiat series. All those games run without crashing on a regular 83+. They just run about twice slower.

I prefer to keep my 15 MHz games cross-compatible, even if it means they run twice slower on older models.

Will the Dispgraphr command still be useable in the future with the Full command? If not, then I am afraid I'M gonna have to stick to version 0.2.3 of Axe Parser for future development. That's unless in the future, you add a compiling option that allows the author to sacrify file size to include both routines and a check if their prog is ran on a 6 MHz calc and automatically run the 6 MHz gs routine rather than the 15 MHz one.

I guess it's your choice, though, considering Axe Parser is your very own project. But I'm afraid if future versions breaks cross-calc compatibility for compiled programs, I will no longer be able to participate into testing future versions and will be sticking to 0.2.3, the last cross-compatible version, to make games (it has pretty much everything I need now anyway).

Or is the 6 MHz command gonna be useable in "Full" mode too?
« Last Edit: May 10, 2010, 02:47:17 pm by DJ Omnimaga »

Offline Raylin

  • Godslayer
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1392
  • Rating: +83/-25
  • I am a certifiable squirrel ninja.
    • View Profile
    • Ray M. Perry
Re: Axe Parser
« Reply #560 on: May 10, 2010, 03:24:09 pm »
One thing about the new update:

Can someone please tell me how the new commands would be used?
More specifically, conj()r and the bitwise "and", "or", and "xor".
Bug me about my book.

Sarah: TI-83 Plus Silver Edition [OS 1.19]
Cassie: TI-86 [OS 1.XX]
Elizabeth: TI-81 [OS 1.XX]
Jehuty: TI-83 Plus Silver Edition [OS 1.19]
Tesla: CASIO Prizm







Offline ztrumpet

  • The Rarely Active One
  • CoT Emeritus
  • LV13 Extreme Addict (Next: 9001)
  • *
  • Posts: 5712
  • Rating: +364/-4
  • If you see this, send me a PM. Just for fun.
    • View Profile
Re: Axe Parser
« Reply #561 on: May 10, 2010, 03:25:17 pm »
How about having a variable that tells the program what type of delay to do? I mean that for example the default state is 0 so that each time a grayscale is run, it uses the 6MHz delay. However, if you put 1 into it, then the grayscale commands will be using 15MHz delays. And maybe have it so that 2 different programs are compiled when the variable is modified.

Dunno if I made myself clear.   
This is the best option possible.  I think it would be like this:
If (Calc == 83+)
Then
0->A
Else
80->A  //I have no idea how much extra this should be, so I'll just use 80
End

This value would be stored somewhere and used later like this:

Grayscale_Pause //Like Pause, only it uses the value looked up at the beginning of the program to determine how long to pause

I do not like the idea of breaking cross compatibility.  If you do this, you will lose people.  Hopefully you can just store this value to a little chunk of Safe RAM and add 5 or so more bytes to the program size and keep cross compatibility. :)

Offline Quigibo

  • The Executioner
  • CoT Emeritus
  • LV11 Super Veteran (Next: 3000)
  • *
  • Posts: 2031
  • Rating: +1075/-24
  • I wish real life had a "Save" and "Load" button...
    • View Profile
Re: Axe Parser
« Reply #562 on: May 10, 2010, 05:54:01 pm »
Quote
I prefer to keep my 15 MHz games cross-compatible, even if it means they run twice slower on older models.
What you can do is this:

prgm15MHZ
:Full
<some code>
:Normal
:DispGraphr
:Full
<more code>

That way it will do all the game calculations in 15MHz mode but still update the graph in 6MHz mode.  The 6MHz and 15MHz DispGraph routines take the same amount of time since they are limited by the same LCD delay in both cases.

One thing about the new update:

Can someone please tell me how the new commands would be used?
More specifically, conj()r and the bitwise "and", "or", and "xor".

This is a good explanation for the bitwise features:
http://en.wikipedia.org/wiki/Bitwise_operation

As for conjr, these are the same:
conj(L1,L6,100)
conj(L1+99,L6+99,100)r
It copies the 99th byte first then the 98th, the 97th, ... to the 0th byte instead of the other way around.
___Axe_Parser___
Today the calculator, tomorrow the world!

Offline Raylin

  • Godslayer
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1392
  • Rating: +83/-25
  • I am a certifiable squirrel ninja.
    • View Profile
    • Ray M. Perry
Re: Axe Parser
« Reply #563 on: May 10, 2010, 07:20:14 pm »
Hmm...

What are the applications of such?
I only see redundancy as of right now.
Bug me about my book.

Sarah: TI-83 Plus Silver Edition [OS 1.19]
Cassie: TI-86 [OS 1.XX]
Elizabeth: TI-81 [OS 1.XX]
Jehuty: TI-83 Plus Silver Edition [OS 1.19]
Tesla: CASIO Prizm







Offline calc84maniac

  • eZ80 Guru
  • Coder Of Tomorrow
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2912
  • Rating: +471/-17
    • View Profile
    • TI-Boy CE
Re: Axe Parser
« Reply #564 on: May 10, 2010, 08:30:47 pm »
Hmm...

What are the applications of such?
I only see redundancy as of right now.

You mean the backwards copy routine? It's so you can copy overlapping areas. For example, if you wanted to copy 5 bytes from L1 to L1+1, a forward copy would overwrite the later data before it could be used.
"Most people ask, 'What does a thing do?' Hackers ask, 'What can I make it do?'" - Pablos Holman

Offline Quigibo

  • The Executioner
  • CoT Emeritus
  • LV11 Super Veteran (Next: 3000)
  • *
  • Posts: 2031
  • Rating: +1075/-24
  • I wish real life had a "Save" and "Load" button...
    • View Profile
Re: Axe Parser
« Reply #565 on: May 10, 2010, 08:48:34 pm »
Also, you can use it for general optimizing.

If you check the source of Starship, I was using a bunch of things like this: conj(A-3,B-3,4)
Which I changed to this: conj(A,B,4)r  Since it doesn't have to do extra subtractions.
___Axe_Parser___
Today the calculator, tomorrow the world!

Offline meishe91

  • Super Ninja
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2946
  • Rating: +115/-11
    • View Profile
    • DeviantArt
Re: Axe Parser
« Reply #566 on: May 10, 2010, 10:29:55 pm »
Hey, just on the grey scale issue thing. Would it be possible to have something like DispGraph(15)r or DispGraph(6)r? That way you could just choose which speed you want and when. I don't know if you already decided or not, but just a thought. Hope it all is going well :)
Spoiler For Spoiler:



For the 51st time, that is not my card! (Magic Joke)

Offline Raylin

  • Godslayer
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1392
  • Rating: +83/-25
  • I am a certifiable squirrel ninja.
    • View Profile
    • Ray M. Perry
Re: Axe Parser
« Reply #567 on: May 10, 2010, 10:36:07 pm »
That would seem more troublesome than it would be helpful.
You must remember not everyone is smart like us.
People can screw that command up and break the entire program.

Bug me about my book.

Sarah: TI-83 Plus Silver Edition [OS 1.19]
Cassie: TI-86 [OS 1.XX]
Elizabeth: TI-81 [OS 1.XX]
Jehuty: TI-83 Plus Silver Edition [OS 1.19]
Tesla: CASIO Prizm







Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55943
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Axe Parser
« Reply #568 on: May 10, 2010, 10:44:27 pm »
Quote
I prefer to keep my 15 MHz games cross-compatible, even if it means they run twice slower on older models.
What you can do is this:

prgm15MHZ
:Full
<some code>
:Normal
:DispGraphr
:Full
<more code>

That way it will do all the game calculations in 15MHz mode but still update the graph in 6MHz mode.  The 6MHz and 15MHz DispGraph routines take the same amount of time since they are limited by the same LCD delay in both cases.

One thing about the new update:

Can someone please tell me how the new commands would be used?
More specifically, conj()r and the bitwise "and", "or", and "xor".

This is a good explanation for the bitwise features:
http://en.wikipedia.org/wiki/Bitwise_operation

As for conjr, these are the same:
conj(L1,L6,100)
conj(L1+99,L6+99,100)r
It copies the 99th byte first then the 98th, the 97th, ... to the 0th byte instead of the other way around.

Ah ok thanks, that migth work.

Also, while at work, I thought about another idea for my issue: in the future, if you add external libraries, I will just keep my grayscale calling external so if I want to compile my game I do not need to change like 50 grayscale commands in a dozen of sub-programs when I compile for a second set of calculators. I would just change one routine instead.

Offline meishe91

  • Super Ninja
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2946
  • Rating: +115/-11
    • View Profile
    • DeviantArt
Re: Axe Parser
« Reply #569 on: May 10, 2010, 10:51:32 pm »
Well I figure as long as there is a short explanation saying something like the six is for 83+ calculators while 15 is for 83+SE/84+(SE). Then you could say that if you want to use the six on the higher calculators that it is more advanced stuff. I don't know. Just seems like a good idea to me though.
Spoiler For Spoiler:



For the 51st time, that is not my card! (Magic Joke)