This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Topics - pimathbrainiac
76
« on: April 29, 2013, 01:29:20 pm »
With all this talk about a potential trio piece for Dapiano, epic7, and myself, I decided to start a trio piece for us! Here is a wav of what I have so far (yes, it ends on a long note so it has an ending): https://www.dropbox.com/s/te175aoo61qf3gl/DaEpicPimathPiano.wavI'll post a score once it is uploaded to Dropbox!
77
« on: April 25, 2013, 02:29:12 pm »
We all know what jazz is, right?
That music characterized by swing (sometimes) and lots of sevenths
Discuss your experiences with jazz here (favorite tunes, if you've been in jazz band, etc)
Why? I feel as if jazz is a lost genre of music, there is only 1 jazz station in Atlanta anymore, and most of the songs it plays are from the 70s and before.
78
« on: April 25, 2013, 02:23:43 pm »
I've been posting my poetry on ztrumpet's thread, which is technically his, so I'm creating my own for my works.
Here's a poem to kick off the thread:
Here's one! There's one! That's one! I see one!
One is singular One thing that's by itself One is nonspecific One of those computers on the shelf
One is evil One must learn the power of the dark side One is goodness One must apologize because one lied
One is something One that did the thing One unspeakable thing One thing that is spoken of anyway
THE GAME
79
« on: April 19, 2013, 05:17:04 pm »
I noticed that on Cemetech and Ti-Planet there are usergroups that you can be a part of. Not in the sense of moderators and such, but in the sense of groups of users.
Is there any way we can add that to the site?
80
« on: April 18, 2013, 11:54:31 am »
The object of the Rules Game is simple: win the Rules Game How? Make rules. Set-in-stone rules: You may not make a rule that automatically makes someone win/lose the Rules Game (... wins the game, ... loses the game, "if you do this, you win," etc.) You may not double-post. period. (even in accordance the the forum rules) Once someone wins, they will be posted in a winners list in this post, and a new game will start. You may not comment on other people's rules without posting a rule in the same post (just say "comment:" before you make a comment) You may not negate other people's rules Rules remain for the duration of a game. If you don't follow them, you are out. Edits count as comments Edits to a violating rule are disallowed unless made before the next rule is made. You are not allowed to join once the first person is out. When there are two people left, if no new rule is made within a day of the previous, the person who made the last rule wins! Winners (so far): epic7 with: http://ourl.ca/18745/376490I'll start: I like poetry And this is a cool haiku All rules must be too
81
« on: April 17, 2013, 10:15:53 pm »
Line clipping? I thought that that is a problem being worked on by Runer112 for future versions? Well, yes, but here's a temporary fix, using trig! To all those who may spot any error in my trig: please tell me. I'll try to fix it. Inspiration: I saw god's (leafy's) Super Hexagon port, and I saw a problem that he listed: The line clipping. I thought to myself: how do I solve this? The answer is by using trig! Just to show you I'm not crazy: here are some screenies for a very incomplete Super Hexagon engine (I will not continue after this point because I just made it to solve a problem): Axe trig background: Trig in Axe is not standard to the trig you learned in school. There are no degrees or radians. There are only sine and cosine functions (of which all normal functions can be derived from). The period of these functions is 256, and the amplitude 128 (signed). To get a sine of an angle (0-255, not 0-359), it is simply sin(angle)//127 (make sure it is // and not /, due to the output being signed). The same works with cosine. Since my super hexagon engine is done in polar coordinates, it is easier with this case, but there is only one more step with using Now: here's some code before I explain how to do stuff (copied from graph-link): .HEXAGON
ExprOn
For(A,0,7) 0ü{A+L} End
64ü{1+L}
128ü{3+L}
192ü{5+L}
0ü{7+L}
0üXüAüBüCüD 1üF 2üE 65435üW 43üO 0üR
0üGüHüIüJüKüLüMüN
Repeat (getKey(15)) D+EüD 8*(getKey(3)-getKey(2))üC X+CüX If (Xùú8) 248üX ElseIf (Xù255) 0üX End If (Dùú2) 254üD F++ sub(A) ElseIf (Dù255) 0üD F++ sub(A) End 10*cos(X+D)üA 10*sin(X+D)üB ClrDraw Pxl-On(47+(A//128),31+(B//128)) Line((7*cos(0*O+D))//128+47,(7*sin(0*O+D))//128+31,(7*cos(1*O+D))//128+47,(7*sin(1*O+D))//128+31) Line((7*cos(1*O+D))//128+47,(7*sin(1*O+D))//128+31,(7*cos(2*O+D))//128+47,(7*sin(2*O+D))//128+31) Line((7*cos(2*O+D))//128+47,(7*sin(2*O+D))//128+31,(7*cos(3*O+D))//128+47,(7*sin(3*O+D))//128+31) Line((7*cos(3*O+D))//128+47,(7*sin(3*O+D))//128+31,(7*cos(4*O+D))//128+47,(7*sin(4*O+D))//128+31) Line((7*cos(4*O+D))//128+47,(7*sin(4*O+D))//128+31,(7*cos(5*O+D))//128+47,(7*sin(5*O+D))//128+31) Line((7*cos(5*O+D))//128+47,(7*sin(5*O+D))//128+31,(7*cos(0*O+D))//128+47,(7*sin(0*O+D))//128+31) sub(B) DispGraph End Return
Lbl A !If (F^5) úEüE End Return
Lbl B 0üGüHüIüJüKüLüMüNüR For(K,0,3) {(2*K)+L}üH {(2*K)+1+L}-6ü{(2*K)+1+L} {(2*K)+1+L}/2üG If (G÷7) 0ü{(2*K)+1+L} {(2*K)+1+L}/2üG End For(L,0,5) (G*cos(L*O+D))//128+47üI (G*sin(L*O+D))//128+31üJ (G*cos((L+1)*O+D))//128+47üM (G*sin((L+1)*O+D))//128+31üN If ((J<<0) and (N<<0)) ElseIf (J<<0) J*sin(O-(448-(L*O+D)))//127//sin(64-(O-(448-(L*O+D))))//127+IüI 0üJ ElseIf (N<<0) N*sin(O-(448-((L+1)*O+D)))//127//sin(64-(O-(448-((L+1)*O+D))))//127+MüM 0üN End If ((J>>63) and (N>>63)) ElseIf (J>>63) J*sin(O-(448-(L*O+D)))//127//sin(64-(O-(448-(L*O+D))))//127+IüI 63üJ ElseIf (N>>63) N*sin(O-(448-((L+1)*O+D)))//127//sin(64-(O-(448-((L+1)*O+D))))//127+MüM 63üN End !If (H=L) Line(I,J,M,N) End End End Return
We are only concerned with this segment of code: Lbl B 0üGüHüIüJüKüLüMüNüR For(K,0,3) {(2*K)+L}üH {(2*K)+1+L}-6ü{(2*K)+1+L} {(2*K)+1+L}/2üG If (G÷7) 0ü{(2*K)+1+L} {(2*K)+1+L}/2üG End For(L,0,5) (G*cos(L*O+D))//128+47üI (G*sin(L*O+D))//128+31üJ (G*cos((L+1)*O+D))//128+47üM (G*sin((L+1)*O+D))//128+31üN If ((J<<0) and (N<<0)) ElseIf (J<<0) J*sin(O-(448-(L*O+D)))//127//sin(64-(O-(448-(L*O+D))))//127+IüI 0üJ ElseIf (N<<0) N*sin(O-(448-((L+1)*O+D)))//127//sin(64-(O-(448-((L+1)*O+D))))//127+MüM 0üN End If ((J>>63) and (N>>63)) ElseIf (J>>63) J*sin(O-(448-(L*O+D)))//127//sin(64-(O-(448-(L*O+D))))//127+IüI 63üJ ElseIf (N>>63) N*sin(O-(448-((L+1)*O+D)))//127//sin(64-(O-(448-((L+1)*O+D))))//127+MüM 63üN End !If (H=L) Line(I,J,M,N) End End End Return
Simply put: This is the display routine for incoming sprites. If it sees a line that is clipped, it fixes it. This is the first little bit of code: (G*cos(L*O+D))//128+47üI (G*sin(L*O+D))//128+31üJ (G*cos((L+1)*O+D))//128+47üM (G*sin((L+1)*O+D))//128+31üN
It does the polar to rectangular conversion. G is the radius, L*O is the angle of one point relative to D (which rotates everything, so it is added here), and (L+1)*O is the other The 47 and 31 are the coordinates for the center of the screen (the origin) If ((J<<0) and (N<<0)) ElseIf (J<<0) J*sin(O-(448-(L*O+D)))//127//sin(64-(O-(448-(L*O+D))))//127+IüI 0üJ ElseIf (N<<0) N*sin(O-(448-((L+1)*O+D)))//127//sin(64-(O-(448-((L+1)*O+D))))//127+MüM 0üN End If ((J>>63) and (N>>63)) ElseIf (J>>63) J*sin(O-(448-(L*O+D)))//127//sin(64-(O-(448-(L*O+D))))//127+IüI 63üJ ElseIf (N>>63) N*sin(O-(448-((L+1)*O+D)))//127//sin(64-(O-(448-((L+1)*O+D))))//127+MüM 63üN End
This is the meat of the routine. It checks if an endpoint is out of bounds (and it both are, it does nothing) (Note: This routine was written for the top and bottom of the screen to be checked, but not the sides. It follows pretty much the same process, only the coordinates are flipped and 448 is 364) The key is the law of sines: There is a triangle formed by the top border of the screen, the vertical line of the x coordinate of the point off-screen, and the line that is being clipped. By using this (the formula above) we can calculate the x coordinate of the point on the line that is at y=0 That is all. Remember to find your angles first if you are using rectangular coordinates. If you don't feel that I explained it well enough, please let me know and tell me what I need to explain.
82
« on: April 15, 2013, 02:30:06 pm »
Well, I've been asked for a screenie, so here is one of my game: It's not much, but I enjoyed programming it.
83
« on: April 14, 2013, 09:15:02 pm »
With all these fancy contests around (with prizes and such), I thought it would be nice to see a contest. Just a contest. Nothing but a contest. No prizes. Just for the heck of it.
The rules are simple:
Make an Axe program that will amaze (you must not have been working on it before now). It can be math, games, whatever. Just do whatever inspires you. Tell me what it will be on this thread. I will add you to the list of contestants. Program it. You may not release source or binaries until the due date (screenies okay, though). Have fun! Your job is to make others like your project. You may use axioms, but you may not create your own specifically for this task. You may use external ASM code, but you may not create your own specifically for this task.
Due date: 12:00 AM on May 27, 2013
How to win: Community votes. I'll put a poll up and have a topic with all the files attached. The person with the most votes by June 1st wins!
Known Competitors:
Matrefeytontias
Ki1o
84
« on: March 27, 2013, 10:16:26 pm »
So... Everything has a beginning.
My story:
One day, I was tired of playing Block Dude, and I decided to google games for the TI-84 (I figured TI-Connect had to be useful SOMEhow). Anyways, I found TICalc, did some stuff, started programming Axe, and a year later came here for help with a year-long project of mine (AxeChess).
That's my beginning, what's yours?
85
« on: March 26, 2013, 12:36:44 pm »
Does anybody know how to do this?
I am trying to make a program that will convert some stuffs to an Axe program, but I don't know how to create .8xp programs in Java.
86
« on: March 25, 2013, 02:56:29 pm »
In the tradition of ThePenguin77 and Hayleia, I am making my grayscale EPIC!!! So... Wabbit does not like my code , but it works on my calc, so hopefully it will work on yours! Attached is the source (84+), to make it 83+, calculate the values necessary as shown in the tutorial. Speaking of which, here is my explaination/tutorial!: First: let's start with the interrupt speeds: Speed // 83+ // 84+ 0 // 560 Hz // 512 Hz 2 // 248 Hz // 228 Hz 4 // 170 Hz // 146 Hz 6 // 118 Hz // 108 Hz With multiple interrupts running at multiple speeds, you can have more data points than just one interrupt! The problem: how do you make the data points sync up? Here's how (set up for a basic RPG engine with only one 12*8 tilemap) (please excuse the direct cut-and-paste from graph link): .CC
51.000üE 0.000üF 108.000üJ 0.000üT 0üX 0üY 0üA 0üB
J/*EüF 0.211üK 0.474üI 0.740üL
FnOff
ClrDrawõõ
[010101010101010101010101]üGDB1 [010101010101010101010101] [010101010101010101010101] [010101010101010101010101] [010101010101010101010101] [010101010101010101010101] [010101010101010101010101] [010101010101010101010101]
[0000000000000000]üPic1 [FFFFFFFFFFFFFFFF]
For(Z,0,11) For(Á,0,7) Pt-On((Z*8),(Á*8),(8*{(Á*12)+Z+GDB1})+Pic1)õ End End
fnInt(DG,0) fnInt(DH,6) fnInt(DI,4) fnInt(DJ,2) Pause 200 While 1 If (getKey(54)) E-0.100üE If (E÷49.000) 65.000üE End J/*EüF 0.000üT Pause 200 End If (getKey(55)) E+0.100üE If (Eù66.000) 50.000üE End J/*EüF 0.000üT Pause 200 End getKey(3)-getKey(2)üA getKey(1)-getKey(4)üB FnOff X+AüX Y+BüY ClrDraw Pt-On((X/2),(Y/2),8+Pic1) FnOn EndIf getKey(15) LnReg õ Return
Lbl DG T+KüT If (TùF) DispGraphõ 0.000üT End Return
Lbl DH T+1.000üT If (TùF) DispGraphõ 0.000üT End Return
Lbl DI T+LüT If (TùF) DispGraphõ 0.000üT End Return
Lbl DJ T+IüT If (TùF) DispGraphõ 0.000üT End Return
Let's run through that code block by block: 51.000üE 0.000üF 108.000üJ 0.000üT 0üX 0üY 0üA 0üB
J/*EüF 0.211üK 0.474üI 0.740üL
Variable declarations. Notice how almost everything is an 8.8 fixed point number. Why? Because of the way the interrupts will work. (basically, the 108Hz interrupt is the main one, (1 is added to the counter, T, every time it is called), and K, I, and L are the values added to the counter every time a different interrupt is called). K, I, and L are J/value, where value is the Hz for the other interrupts. J is the Interrupt 6 value. Change these to be what is needed for the 83+ models (round to 3 decimal places) using the calculation I just said. F is the target for the counter, and E is the target framerate. [010101010101010101010101]üGDB1 [010101010101010101010101] [010101010101010101010101] [010101010101010101010101] [010101010101010101010101] [010101010101010101010101] [010101010101010101010101] [010101010101010101010101]
[0000000000000000]üPic1 [FFFFFFFFFFFFFFFF]
Same old stuff for an RPG (tilemap and sprites) For(Z,0,11) For(Á,0,7) Pt-On((Z*8),(Á*8),(8*{(Á*12)+Z+GDB1})+Pic1)õ End End
Drawing the back buffer once (just as an example, put this in a subroutine if you wish) fnInt(DG,0) fnInt(DH,6) fnInt(DI,4) fnInt(DJ,2)
Setting up the interrupts Pause 200 While 1 If (getKey(54)) E-0.100üE If (E÷49.000) 65.000üE End J/*EüF 0.000üT Pause 200 End If (getKey(55)) E+0.100üE If (Eù66.000) 50.000üE End J/*EüF 0.000üT Pause 200 End getKey(3)-getKey(2)üA getKey(1)-getKey(4)üB FnOff X+AüX Y+BüY ClrDraw Pt-On((X/2),(Y/2),8+Pic1) FnOn EndIf getKey(15) LnReg õ Return
The main body of the code. There are adjustments using 2nd and mode (1/10 hz adjustments), and the ability to move a block around the screen. Now for the interrupts: Lbl DG T+KüT If (TùF) DispGraphõ 0.000üT End Return
Lbl DH T+1.000üT If (TùF) DispGraphõ 0.000üT End Return
Lbl DI T+LüT If (TùF) DispGraphõ 0.000üT End Return
Lbl DJ T+IüT If (TùF) DispGraphõ 0.000üT End Return
Here's what they do: They add their respective values to the counter, and then they see if the counter is greater than or equal to the target counter. If so, the the screen is drawn, and the counter is reset Long story short: The faster interrupts are fractions of the longer interrupt, and they add to the counter smaller amounts for accuracy. Because there are more times the counter is incremented, the frame rate is more accurate. I hope this helps! And may the grayscale be with you!
87
« on: March 22, 2013, 10:07:36 am »
Hayleia recently posted this: http://ourl.ca/17145It got me thinking: how do I make a "more precise" method for greyscale and I came up with a semi-solution (no interrupts necessary!) This is a calibration screen. At the end it prints the number to put in A, which is a semi-timer variable. When I say semi, that means that the ability to do this has completely to do with the time the program takes to run (A is about 12 on my calc, but about 150 or 75 is needed for wabbit in my case.) This works with 3 and 4 level grayscale, as shown with my screenie. Without further ado: my code! .AA
12->A 0->C 0->B
[FFFFFFFFFFFFFFFF]->Pic1
ClrDraw(rr) For(X,0,11) For(Y,0,7) Pt-On(X*8,Y*8,Pic1)(r) End End
Repeat (getKey(54)) If (getKey) Pause 250 End getKey(4)-getKey(1)->B A+B->A If (A=0) 255->A End If (A=256) 1->A End C++ If (C->A) DispGraph(r) 0->C End End DispGraphClrDraw(rr) ClrHome Output(0,0,A>Dec) Repeat (getKey(15)) End
The "sweet spot" A depends on the calculator and how quickly the program loops in its normal state, as well as how often you need to refresh the screen. Possible use: pic viewers Maybe possible use: non-action games (like chess) Not possible use: action games I hope this is helpful!
88
« on: March 06, 2013, 03:25:15 pm »
Soooo... my calc class ended all new stuffs with IBP Here is my (totally NOT objective version of calc AB) So you start out learning about limits and stuff (Easy, right? Been doing that since algebra II) And then you get to the limit definition of a derivative: lim(dx->0) | (f(x+dx)-f(x))/(dx) It was in hindsight, easy, but seemed hard at the time Then we learned power rule (dropping the power, reducing the power, etc.) (made life easy for about a day) Then product rule (easy), then quotient rule (OMG HARD TO REMEMBER), then chain rule (thank you calc teacher for making stuff easier!) Then trig derivative stuffs (medium difficulty), Then inverse trig (OMG HARD again), then safety until... Then optimization (hard, but sooooo much easier than the previous) Then powers/logs in derivatives (okay, just another formula) Then we go away for winter break... (to be continued in 2 days (reduced form of 2 weeks anticipation))
89
« on: March 06, 2013, 03:07:40 pm »
Hey, are there any good/easy to use Java game engines out there other than JMonkey out there?
I don't want to use JMonkey because it requires jdk 6, and I have jdk 7, and I don't want to downgrade...
90
« on: March 04, 2013, 12:39:49 pm »
I have an idea for an epic rap battles tournament here on Omni! Anyone in???
Similar to ERB on Youtube, but between Omni members, bracketed up, to decide who is the rap king of Omni!
How? An IRC room, of course! (spectators can not talk during rap battles)
All raps will be freestyle based on what the other person said before.
One person does a verse of 8 lines, then the other person, and it goes back and forth four times. Winners decided by votes afterwords!
Are you in?
People who are in so far:
epic7 ruler501 Freyaday Sorunome blue_bear_94 turiqwalrus pimathbrainiac (me (why not? winning is decided by community votes!)) Homer-16
IDK if they are in or not:
Juju
|