adding new subroutines to firmware I have been making changes to many of the timer functions in my camera's firmware and yesterday figured out how to add more subroutines to it.
The time-lapse function has been modified to vary anywhere from 3 seconds to 24 hours and the display screens have been adjusted so they can change really fast - like around a tenth of a second, so you don't have to wait around for all those boring screens to load (like "CVS Turning Off"....)
For kite aerial photography it is setup so that the camera waits 10 minutes before taking the first picture, and then 9 seconds of delay between each subsequent picture. This helps give me time to unroll the line and get it up high without wasting memory taking pictures in the first few minutes.
I discoved that almost all the timer functions use addresses $f704. $f705, or $f706. So if you bypass those functions everything will happen really fast.
The shutter is interesting to play with. I sent it to a timer function after the shutter opened and the picture came out overexposed, and if I only opened the shutter once it was brighter than usual. This might be useful for long exposures like astronomy or night vision.
Anonymous- 01-08-2007
Great finds there. can you post a how to on the delays you have for your camera and the model type
zapped- 01-09-2007
Keep up thegreat work, findingnemo!
Be sure to let me know if you write a function for file I/O on the camera. In the process of my exploration of the firmware it would be useful to write to a file the rusults of a large range of input values for any function. I am currently running the functions through the v8 simulator but that is somewhat slow because I have to change the input values, recompile, rerun and then manually log the output values.
findingnemo- 01-09-2007
zapped,
I will let you know if I do anything with the file I/O, but as of yet I have not found out how to read or write to a file.
ZAC,
during my kite photography modifications and delay adjustments on a 6600 27 I did these things:
1. find all the data values that change the time delay. I found 3 values and adjusted them.
I changed firmware address $7f00 from value 5 to 14. This changes the delay increments from
decaseconds to minutes. It may not seem right mathematically, but it works.
2. create another picture counter (of my own)
create a branch from start of firmware to end of bank 3. I chose the location of the startup
screen at firmware location $A631 by adding BF F0 3F
I chose to use data address $2f0d to store my picture count, so I added this code in the empty
space at the end of bank 3: e0 1a c8 0d 2f b9
3. set a starting delay time counter for 10 minutes at the start
add this code in the empty space at the end of bank 3:
e0 0b c8 2f 0f b9
4. create a function that changes the prescalar depending on whether the camera is starting or running
create a branch from the location of the $f706 time process loop to end of bank 2.
firmware location $F727 by adding BF A0 3F
add this code in the empty space at the end of bank 2:
e8 2f 0f 40 90 06 e0 74 c8 06 f7 b9 e0 ff c8 06 f7 b9
5. decrease the delay value once the first picture has been taken
create a branch from the location where the next picture is requested on timeout to end of bank 2.
firmware location $87ae by adding bc D0 3F
add this code in the empty space at the end of bank 2:
e0 01 c8 2f 0f bc XX XX
XX XX is the address where the camera takes the next picture when it times out.
6. detect when all the pictures have been taken and turn the camera off
add this code in the empty space at the end of bank 2:
e8 0d 2f 40 c8 0d 2f 90 03 bc XX XX
XX XX is the address where the camera turns off when the original firmware times out.
Forumer™ is Voted #1 Free Forum Hosting provider
Build your own community today with the largest message board hosting company.