Omnimaga
Calculator Community => Other Calc-Related Projects and Ideas => TI Z80 => Topic started by: Happybobjr on June 11, 2010, 02:44:08 pm
-
My project has just been updated to version 1.5.2
I did almost all of this while at my grandmother's house (O_O)
It now contains the ability of grayscale :D
Up next is saving a pic for later viewing :)
-
This isn't exactly related, as have no idea, but why have you attached those two Axe progs?
-
one compiled and one not of the etch-e-sketch that i have
-
What do you mean by 'make this a "project" for my account'? If you mean how some members' (like me) sigs have project status in them, you can just edit your sig to reflect your projects. If you want a user-bar, you can use this. (http://userbars.removedfromgame.com/) If this isn't what you want, please elaborate.
Btw, I'm afraid I won't be able to help, mainly because I don't do a lot w/hardware. Sorry :(
-
ya that is what i meant. i will remove that now.
plz help whoever can
-
For making a userbar in your sig, I'd recommend using this program from Omni's former staff, {AP}: http://userbars.removedfromgame.com/index.php
Good luck with your project! :D
-
ztrumpet, that's what I linked to. :P
happybobjr: I think yunhua98 was asking why they have the word "Snake" (abbr, of course) in the program name if they're Etch-A-Sketch programs
-
Oooh, lookie! There's a link in your post that I forgot to check. :P Sorry about that. :) Anyway, it's a good program. ;D
-
because it was easier for me with that name
can anyone suggest someone who could help?
-
Do you have a cable you can salvage that can connect to the linkport? Like a phone headset?
-
well, I can see one way with axe. You'd need someone to make a small hex piece of asm that can check the link port connectors, since axe can't use the link port yet (i think). Sounds like a cool idea, though. I recommend, instead of metal connectors which are rather unreliable, you could have a system like those rechargeable flashlights. Shake, and the metal gives a small charge to the wire, clearing the screen. You'd have to add some sort of current limiter, probably a resistor, to prevent killing your link port.
Happy hacking!
-
Do you have a cable you can salvage that can connect to the linkport? Like a phone headset?
yes i do have one that i am ready to take apart.
well, I can see one way with axe. You'd need someone to make a small hex piece of asm that can check the link port connectors, since axe can't use the link port yet (i think). Sounds like a cool idea, though. I recommend, instead of metal connectors which are rather unreliable, you could have a system like those rechargeable flashlights. Shake, and the metal gives a small charge to the wire, clearing the screen. You'd have to add some sort of current limiter, probably a resistor, to prevent killing your link port.
Happy hacking!
i have no idea how to pull this off or what parts i should use. i have never attempted anything physical" before
-
Interesting idea. Sadly I'm not good with my hand and hardware stuff so I would probably not attempt doing that, but it would be nice to see something like that in action :)
-
Interesting idea. Sadly I'm not good with my hand and hardware stuff so I would probably not attempt doing that, but it would be nice to see something like that in action :)
so no one here can help?
-
I am sure somebody else than me might be able to help. Most people seems to have finals now or are going into vacations, though, and Friday evenings are usually quiet on the forums, so it might take a while before someone can answer. Also, since Omnimaga is more calc game programming oriented than hardware oriented, I cannot guarantee someone will be able to answer, so it might be a good idea to check on http://www.cemetech.net or http://www.unitedti.org (which both got calculator hardware/modding sections) and if you cannot find anything there, you can also ask help there as well. Keep in mind that on the first forum, a few people aren't always as courteous as most people here, though.
-
thanks
posted on http://www.cemetech.net/forum/viewtopic.php?p=99496#99496
-
chances are i'll be finished with the hardwere part of this today!
so is there any way i can have a piece of coding that checks if there is anything in the i/o
-
mhmm glad you could get some help ^^
Hopefully someone posts the hex code to do it soon
-
hopefully.
i am doing a spring method with a pin in the center
it shakes it touches. the circuit is closed for a second.
this is where i need the code.
-
In Axe, you can use this code:
Asm(DB00E6036F2600)
It returns a number 0-3. I don't remember the codes, but the possibilities are left high right high, left low right high, left high right low, and left low right low.
-
i don't understand?
high and low left and right?
-
There are 3 pins (wires) to the cable. One is ground. The other 2 are input. If the input cables are not connected to anything, just dangling wires, then they are "high". But if they touch the ground wire, they become "low".
-
thanks... i think.... i think i understand
-
Just play around with touching different wires together and see how it affects this code:
Repeat getkey(15)
ClrHome
Disp Asm(DB00E6036F2600)>Dec
Pause 100
End
-
nearly finished with physical part
might have it done today
-
finished!
now just the prog.
-
Nice code Quigibo! Can you post the source for that Asm code? Thanks! :D
DB00E6036F2600
(I'd like to see the source to this.) Thank you! ;D
-
working!
holy arf canoodles.
this is amazing
3 = no connection
but i can get a 2!
-
i need your help
i finished the program implementing the shake detection onto the etch-e-sketch
its not realistic enough for me
how can i do the basic command "randint(1,95) sto A" into axe?
that would be the x axis
i want it to find 20 random locations and have pxl-off or point off, whichever, to clear the screen having more shaking
-
Reading the link port in assembly is simply this:
in a,(0)
and 3
Result 0-3 is in A. The rest of the hex is just to put it into HL for axe input.
-
100% complete
is this good enough to post to downloads and stuff?
attachments are on 3rd page
-
No props to Kerm for coming up with the hardware design for you? Anyway, I made my own version based on the design I gave you, pix below, program video coming in a few minutes. I of course wrote my program in pure z80 ASM.
(http://www.cemetech.net/img/projects/shakedevice.jpg)
-
as i say on th other forum.. i'm working on giving you credit.. and sleeping at the same time. i had a long day.
edit: got some creds worked in
-
Very cool and very innovative! I actually made a little thing like that myself to try it :)
-
Here's how my implementation worked out if anyone's interested, including video. :)
http://www.cemetech.net/forum/viewtopic.php?p=99600#99600
-
Looks cool! (both for happybobjr and KermMartian) That turned out really well. :)
-
you going to make one?
-
Wow that's awesome! Nice to see those calc mods and it seems to work pretty well ^^
-
Wow, that's pretty neat!
Excellent job. ;D
-
I couldn't have done it without KermMartian or Quigibo.
____________________
Edit:
price to make.
3.50 for two mono 2.5 mm jacks at radio shack.
$0.10 for the needle/pin
$0.62 for spring ( used either a 140 or a 142. this might just be the hardware stores numbering though. )
cost comes to about $4.50 or $5.00 ( with the glue and solder included )
you should have
a soldering iron and solder ( find a friend with one if not )
a hot glue gun and a glue stick
______________________________________
TELL ME OF IMPROVEMENTS I CAN MAKE FOR MY PROGRAM please.
thank you. it is still very sloppy. just like my grammar and spelling today.
link one = uncompiled
........_theta_axsnake
two: compiled
........axsnake3
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
( decreases # off pixels deleted at shake
) increases # off pixels deleted at shake
+ and - adjust speed.
^ inverses all pixels
X and / are store picture and recall picture
clear closes the program.
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
-
Mhmm nice it doesn't seems too expensive if you got a soldering iron and that stuff.
I doubt I would take on such project, though, because I am not really a person that likes to do manual work such as soldering, especially small stuff.
As for the program, does it absolutely requires that mod, though? Or can we play normally with keypad?
EDIT: btw on Omnimaga, the double-posting limit is 6 hours, so you would have been allowed to bump your topic with your edit :P
-
As for the program, does it absolutely requires that mod, though? Or can we play normally with keypad?
You can also Clear with [clear], but then it's not as like an Etch a Sketch. :)
-
Oh I meant the Snake game he posted
-
Oh I meant the Snake game he posted
It's actually the Etch a Sketch, he just is currently using these names. =/
-
Oooooh ok, weird, I got confused x.x
-
As for the program, does it absolutely requires that mod, though? Or can we play normally with keypad?
To clear the screen you will need the mod.
but, you can edit the code to have a button clear the screen.
EDIT: btw on Omnimaga, the double-posting limit is 6 hours, so you would have been allowed to bump your topic with your edit :P
wait what?
Oh I meant the Snake game he posted
i didn't post a snake game. that is just the name i am using right now XD
it is really the etch-e-sketch
it is easyer for me to remember it by that name. I started this project with just a snake game in mind ( w/o a mod ).
-
habbybob: what DJ was saying was that double-posting is allowed providing it has been at least six hours.
-
As for the program, does it absolutely requires that mod, though? Or can we play normally with keypad?
To clear the screen you will need the mod.
but, you can edit the code to have a button clear the screen.
Oh, okay. I guess it was Kerm's that also used [Clear]. :)
-
habbybob: what DJ was saying was that double-posting is allowed providing it has been at least six hours.
Yeah what Calcdude84se said. Basically if you need to post an update, but nobody replied yet and it has been over 6 hours, feel free to post a new reply instead of having to just edit your last post.
-
ok good to know about the double posting.
It won't be hard to edit the code to have a button clear the screen.
just find the spot in the code you want and add.
:if getkey(??) and (G=??)
:clrdraw
:end
if you don't have the and G=?? part, strange errors occur.
earlier befog i did these when i held down - it increased the speed and moved the courser or whatever right !?!?!?!??!
-
help plz
can anyone optimize this
.EESKETCH
Full
diognosticoff
DispGraph
ClrDraw
0->S->O->P+1->L+9->X->Y+90->A
Text(82,0,A|>Dec
Text(1,0,L|>Dec
Repeat G=15
getKey->G
asm(DB00E6036F2600)->I
If I=0:For(J,0,L):Pxl-Off(rand^96,rand^65):End:DispGraph:End
If X<95 and getKey(3):X+1->X:sub(A):End
If Y>7 and getKey(4):Y-1->Y:sub(A):End
If X>0 and getKey(2):X-1->X:sub(A):End
If Y<62 and getKey(1):Y+1->Y:sub(A):End
If G>4
While getKey(29) and (G=29):If L>1:L-1->L:Text(1,0,L|>Dec):Pause 125:End:End
While getKey(21) and (G=21):If L<255:L+1->L:Text(1,0,L|>Dec):Pause 125:End:End
While getKey(10) and (G=10):Text(82,0,A|>Dec):A+1->A:Pause 110:End
While getKey(11) and (A>1) and (G=11):A-1->A:Pause 110:Text(82,0,A|>Dec):End
If G=13 and getKey(13):StorePic :X->O:Y->P:End
If G=12 and getKey(12):RecallPic :O->X:P->Y:DispGraph:End
If G=56 and getKey(56):ClrDraw:DispGraph:End
If G=14 and getKey(14):DrawInv :DispGraph:End
End
End
Lbl A
Pxl-On(X,Y):DispGraph:Pause A
Return
Normal
i do need the disp graph.
it clears the screen by bringing it to the buffer
-
Well I'm not very good at optimizing Axe right now but I don't think you need that DispGraph on the fourth line since you haven't put anything on the buffer yet. Could be wrong though.
-
If X<95 and getKey(3):X+1->X:sub(A):End
If Y>7 and getKey(4):Y-1->Y:sub(A):End
If X>0 and getKey(2):X-1->X:sub(A):End
If Y<62 and getKey(1):Y+1->Y:sub(A):End
can be
If X>0 and (X<95
getKey(3)-getKey(2)+X->X
sub(A)
End
If Y<62 and (Y>7
getKey(1)-getKey(4)+Y->Y
sub(A)
End
that way you're only calling the subroutine twice.. because think about it, all four of your if-conditionals have the possibility of being true simultaneously, so you'd be calling the subroutine A 3 unnecessary times.
While getKey(29) and (G=29):If L>1:L-1->L:Text(1,0,L|>Dec):Pause 125:End:End
or, more readably:
While getKey(29) and (G=29)
If L>1
L-1->L
Text(1,0,L|>Dec)
Pause 125
End:End
can be
While L>1 and getKey(29)
L-1->L
Text(1,0,L>Dec
Pause 125
End
because if L is not greater than 1, nothing in the while loop happens and is therefore useless, so i put L>1 as a conditional for the loop to be checked against. however, if you want getkey(29) to halt program execution even when L<1, my optimization is useless.
Similar optimizations can be made to the while loops nearby that section in the code.
-
nope. causes to get stuck in corners
-
If X<95 and getKey(3):X+1->X:sub(A):End
If Y>7 and getKey(4):Y-1->Y:sub(A):End
If X>0 and getKey(2):X-1->X:sub(A):End
If Y<62 and getKey(1):Y+1->Y:sub(A):End
can be
If X>0 and (X<95
getKey(3)-getKey(2)+X->X
sub(A)
End
If Y<62 and (Y>7
getKey(1)-getKey(4)+Y->Y
sub(A)
End
that way you're only calling the subroutine twice.. because think about it, all four of your if-conditionals have the possibility of being true simultaneously, so you'd be calling the subroutine A 3 unnecessary times.
While getKey(29) and (G=29):If L>1:L-1->L:Text(1,0,L|>Dec):Pause 125:End:End
or, more readably:
While getKey(29) and (G=29)
If L>1
L-1->L
Text(1,0,L|>Dec)
Pause 125
End:End
can be
While L>1 and getKey(29)
L-1->L
Text(1,0,L>Dec
Pause 125
End
because if L is not greater than 1, nothing in the while loop happens and is therefore useless, so i put L>1 as a conditional for the loop to be checked against. however, if you want getkey(29) to halt program execution even when L<1, my optimization is useless.
Similar optimizations can be made to the while loops nearby that section in the code.
with the l one: nope
youe must have the if g=29 also
it prevents strange errors
-
screw it then; i might as well make a useful optimization even if small. this monster:
0->S->O->P+1->L+9->X->Y+90->A
can be turned into this monster:
0->S->O->P+1->L+9->X->Y^2->A
where ^2 means 2 (squared sign)
-
Is the generated code actually smaller though? I'd think an add would be faster and smaller than squaring it. This isn't BASIC :P
I should look over the code myself for optimizations...
-
touche. this is not basic. squaring makes the code larger by 35 bytes.
-
Etch-E-Sketch + Clear By Shake
Version: 1.2.1
Compiler: Axe 3.0
Coded by: James Oldiges of Happybobjr Productions.
Code assistance by: Quigibo found at: http://www.omnimaga.org/index.php?action=profile;u=321
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
History:
I was at school one day, trying to learn the newest version of Axe.
As always I am stubborn and want to learn by trial-and-error.
To start off with I just tried to learn the syntax of the commands.
(In Ti-Basic with pxl-on command it is pxl-on(Y, X)
I am thinking Why The!?!?!?
So I just made a simple program to display what the pixel location was (adjustable by arrow keys)
Well I screwed up. It didn't delete the previous pxl. .. Oops.
So I started drawing for a while, having a good laugh with my friends during math.
My teacher was reviewing so my friends and I didn't need to pay full attention (as long as we were being quiet)
So I updated the program of course to add features like; Clearing the screen
Adjustable speed
Save and restore
And other such goodies.
Then one of my friends came over (one listening to the review, who just finished) asked if a made a real etch-e-sketch.
Sarcastically I shook it and accidently bumped the delete button. The screen cleared :P.
It was funny since he thought the shaking did it.
Eventually we told him what happened.
Right then I made it my project for the whole summer to create an attachment that would clear the screen.
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
Description:
This Etch-E-Sketch is a first of its kind that looks for the I/O port for a command to clear the screen.
Yes KermMartian did make a similar program and attachment as the same time as me.
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
Key codes
+ increases the number of milliseconds between repetition. Thus, slowing the etching speed.
- Decreases the number of milliseconds between repetition. Thus, increasing the etching speed.
/ (divide) Saves the current picture s you may recall it again later (not stowed into pic).
* (multiply) recalls a previously stowed picture. (If had not yet stowed one, clears screen and puts curser at 0, 0
( Decreases the number of pixels removed when shaken (requires attachment)
) increases the number of pixels removed when shaken (requires attachment)
^ (carrot key) shows inverse of the picture.
Del clears screen.
Clear quits program. (Do a double clear for kicks and giggles.)
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
Notes:
Because this is a newer program, it is safer to do a Garbage-collect after each use
Should work on:
Ti-83
Ti-83+
Ti-83+ silver
Ti-84
Ti-84+
Ti-84+ silver.
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
Motion Detection
Up there is only the program. Now you will find the heart and soul of this project, the motion detector.
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
About:
Ok so I started out with no information. I didn't know how to approach this.
I realized it must be possible to detect something in the I/O port, but I didn't know how.
The other thing I did not understand is the making of a 2.5mm male jack.
The jack it turns out has 3 parts. Ground, Left, and Right.
The two in the middle are Ground, the ones next to those are Right, and the tips are Left.
In Axe, Quigibo informed me, you can check for four different occurrences; Left high, left low, right high, and left low.
At start without anything connected, there will be left high and right high.
Left/Right will become low when Left/Right is connected to Ground.
The code Quigibo gave me was: asm(DB00E6036F2600)
This stores a result into ans. (I think not 100% sure about this.)
So if you do asm(DB00E6036F2600)->var, you can have a piece of code depending on the answer.
So then, after tinkering and destroying my 2 2.5mm male jacks, I rushed off to Radio Shack.
"Tell me if you, a Radio Shack", quote from Kungpow, a notoriously funny movie. Well back to the point.
So at Radio Shack I am having no luck finding what I need.
After about 10 min. a guy who worked there asked if he could help.
He could. So then I told him what I needed and he found it, sort of.
He could only find a 2.5mm jack (mono) which only has left and ground.
I am thrilled. This will make soldering everything much easier. 2 for $3.50, what a deal!
Ok Now I have everything. And was good to start building.
Thanks to KermMartian for help with;
Workings and design on 2.5 mm jack and information about most efficient build for project.
Found at: http://www.cemetech.net/forum/profile.php?mode=viewprofile&u=2
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
Contact information: Email is [email protected]
-
Nice readme so far
Make sure to name the file ignoreme.txt, though, so more people will read it :P
-
Nice readme so far
Make sure to name the file ignoreme.txt, though, so more people will read it :P
oh! is that why those are named that!
i always read them lol
-
I only tried to start this trend recently. I used to name them PLEASE_READ_OR_YOUR_CALC_WILL_EXPLODE.txt and dontreadme.txt, but I feel ignoreme.txt is the shortest informative way to tell people that some people need to read readmes more before using softwares :P
I still got some not so good memories of getting 10-12 questions on how to install Zelda DLQ, Reuben Quest The Lost Mirror and The Reign Of Legends 3 every day. When I realized all questions were answered in the readme, I removed the e-mail address from the readmes and replaced it with a forum link.
-
adding a new pic mostly because i am not sure how on other site
Edit by moderator: added to external site:
(http://i855.photobucket.com/albums/ab120/SirCmpwn/th_P6220052.jpg) (http://s855.photobucket.com/albums/ab120/SirCmpwn/?action=view¤t=P6220052.jpg)
(http://i855.photobucket.com/albums/ab120/SirCmpwn/th_P6220053.jpg) (http://s855.photobucket.com/albums/ab120/SirCmpwn/?action=view¤t=P6220053.jpg)
-
darn those are huge pics x.x good thing my browser let me zoom out x.x
Cemetech has no upload feature, because they run PhpBB2 software. I also heard that mod is buggy when some others are installed, which might explain why Kerm did not install any, not to mention Kerm uses a version of the software modified by himself.
What is that by the way?
-
That looks really neat! :D
(I love how I can zoom out with Firefox. :) )
-
Holy enormous pictures batman! Geez!
Looks cool, though.
-
darn those are huge pics x.x good thing my browser let me zoom out x.x
Cemetech has no upload feature, because they run PhpBB2 software. I also heard that mod is buggy when some others are installed, which might explain why Kerm did not install any, not to mention Kerm uses a version of the software modified by himself.
What is that by the way?
out of the loop? (i meant this to be like Billy Mays would say it, as if i were advertising it)
well this is my motion detector thingy.
it works perfectly :P
btw, now that there are more posts the picture sizes are smaller... thats weird...
edit:lol thanks for scaling them down :P
expect a full release today or tomarrow
-
I fixed the pics for you.
-
just made an edit about that :) thanks
-
Yeah SirCmpwn scaled them down. The forums used to do this automatically (150x150), but it caused errors with large pics (500 Internal Server error, unreadable/unuseable topic), so I disabled that script :(
Can't wait to see it released :)
-
i have finished... just making another attachment for documentation purposes.
wait one more thing!!!
how do i absorb pictures into my program from pic1-pic9 thing
-
If your pic, for example, is in Pic0 and you want to store it to the Str1 pointer, do the following:
[Pic0]->Str1
To recall the pic on the screen, you do:
Copy(Str1,L6,756)
DispGraph
out of the loop?
Also I don't think this will help your reputation level overall... no offense but eventually you might find yourself posting only on Cemetech. On this comment, I withdraw from this topic and am no longer following this project anymore. Consider yourself lucky I did not delete the help I provided in my post regarding pic absorbing.
-
If your pic, for example, is in Pic0 and you want to store it to the Str1 pointer, do the following:
[Pic0]->Str1
To recall the pic on the screen, you do:
Copy(Str1,L6,756)
DispGraph
out of the loop?
Also I don't think this will help your reputation level overall... no offense but eventually you might find yourself posting only on Cemetech. On this comment, I withdraw from this topic and am no longer following this project anymore. Consider yourself lucky I did not delete the help I provided in my post regarding pic absorbing.
ok... by out of the loop i only meant that you seemed to have not read a couple of previous posts.
i am sorry as i am seeming to offend you quite often now and i am kind of paranoid.
btw i found the help at... well i put it down, and i probably should have looked it up instead of asking... opps.
found at... http://ourl.ca/4050/90128
-
Well I simply thought it was something different that was related to the project but not shown in the video, which is why I asked. Not everyone is experimented with hardware mods and the terms used. Next time I will just quit bothering asking questions related to hardware projects
-
i am very sorry for offending you. I am a little scatterbrained right now and am getting alot of things switched around. here is the semi-final release of the project, and i would be glad to have you try it and grade its quality.
dj, i just understood what you said, i wasn't trying to direct that tword you. i have this thing i do with my friend where we speak as if advertising. try to imagine this as if Billy Mays were saying it, then you will understand.
out of the loop?
well this is my motion detector thingy.
it works perfectly!
-
I have a new update on the first page and first post.
note: will someone with the power rename this topic to something like "Etch-A-Sketch project: Completed)" ?
-
Nice and topic title updated.
-
thank you. I am thinking about being able to save a pic into an app variable for late viewing.