Code: https://bitbucket.org/hudson/magic-lantern/src/tip/modules/adtg_log/
Notes: http://magiclantern.wikia.com/wiki/ADTG
Logs:
Quote from: g3gg0 on June 08, 2013, 11:05:46 PM
read, compare and understand:
http://upload.g3gg0.de/pub_files/f00fa2c2cea01ee32408009b6e02fcc6/ADTG_CMOS_Writes.7z
this is only the data written to ADTG and CMOS.
try to find out as much about the registers as you can.
if all that is understood, then we have about 10% of the necessary stuff for custom resolutions.
good luck ;)
Looks like a big find. 8)
Is it safe to try on older cameras?
First you need to find some stubs, they are hardcoded for 5D3 now.
Then, take the battery out as soon as you see distorted images. It will look like the CMOS is dieing ;)
I have no idea if it's actually dangerous or not. It probably is.
If you manage increase the sampling area, be prepared for buffer overflows.
thanks for consolidating the data and setting up the wiki page!
my theory about:
8060 - shutter blanking without zoom
i think it specifies the time to wait until sensels are powered.
when they are powered, all incoming light causes the charge to increase.
as soon the video timer has expired, the ADTG will read out the sensels.
why this way and not power the sensels immediately and read out after the specified time ticks?
this way the sensels are not floating/unpowered and thus dont lose any charge before they get read out.
This theory explains perfectly the shutter speed changes when using FPS override (you know the formula from fps-engio.c: EA = (E0 + (1/Fb - 1/F0)) * Ta / Ta0).
(changing FPS timer B in digic, but not in ADTG, will keep the blanking time constant and will stretch the exposure time)
I like these kind of threads :)
Quote from: g3gg0 on June 25, 2013, 03:45:23 PM
my theory about:
8060 - shutter blanking without zoom
i think it specifies the time to wait until sensels are powered.
when they are powered, all incoming light causes the charge to increase.
as soon the video timer has expired, the ADTG will read out the sensels.
why this way and not power the sensels immediately and read out after the specified time ticks?
this way the sensels are not floating/unpowered and thus dont lose any charge before they get read out.
Because they must start collecting photons and then read in a precise time slot. If you power up all the rows together and then, after a while, you start to read the first row, then the second row... every subsequent row has collected too many photons if compared to the first ones, so uneven exposure. If this is your question... or try to explain better if I misunderstood you.
Normal CMOS row timings in video mode (shutterless) are normally as follows (as an example) : - power to row 1 - power to row 2 - power to row 3 - read row 1- power to 4 - read row 2 - power to row 5 - read row 3 - ... and so on... and in photo mode (with shutter) are : - shutter down - power to all rows - shutter up - wait - shutter down - read row 1 - read row 2 - ... and so on
Have to try this on 6D, should work like 5D3.. 50D and others will have to post logs.. maybe can undo removing 0 from the shutter list since a1ex applied that fix.
@dlrpgmsvc:
My question was a rhetorical one which i immeadiately answered :)
For 6D I found
805F
8061
move when shutter is turned.
But
//~ #define FRAME_SHUTTER_BLANKING_ZOOM (*(uint16_t*)0x4045184C) // ADTG register 805f
//~ #define FRAME_SHUTTER_BLANKING_NOZOOM (*(uint16_t*)0x40451850) // ADTG register 8061
This did not work. Got lines and shutter read as 1/24
How do I parse this? Do you have to hook GDB to the camera?
adtg.bin
https://mega.co.nz/#!J4RGjDCb!PDdbfC6G7QE-IuZ0AO4AyQu7b-ZKk9WeVRZbUzB-lm4
50D is 105F and 1061
Also.. on 6D the shutter bounce +/- 1? like the fps override did.. 50D is solid one setting.
the bin can be parsed with the python script in the module directory ;)
some more logs to analyze:
http://upload.g3gg0.de/pub_files/21de3733e625ce46e034292ebada10cb/ADTG_LOGS.zip
some diffs:
http://upload.g3gg0.de/pub_files/7771d7d563098b1b5a59b6c8fe4ae1ea/ADTG_diff_photo_5.html
http://upload.g3gg0.de/pub_files/ba9ad726b163bb941a257553c8db4866/ADTG_diff_photo_4.html
http://upload.g3gg0.de/pub_files/f86237df9fce070e1e179cf56e48464e/ADTG_diff_photo_3.html
http://upload.g3gg0.de/pub_files/6707b4ebfa01939ad5a2cc554bad4dc3/ADTG_diff_photo_2.html
http://upload.g3gg0.de/pub_files/e2bb46127c4ea1b8a2dd295897e3db8a/ADTG_diff_photo_1.html
i uploaded modified versions of adtg_log and trace to my repository.
see https://bitbucket.org/g3gg0/magic-lantern
using these modules, can someone trace crop mode ADTG configuration on 60D or 600D?
I wish to be of help into porting this to 550D : can someone help me into specify what to do ? Even preliminary tests or logs reports... but please, even if I'm a programmer, I'm quite new to this programming environment, so, something I managed to understand, while other things not: can you be as specific as you can, so I can get the point ? Many thanks in advance ! ;D
the most important part is trying to understand what the registers in the logs mean.
this means, finding and identifying numbers that could make up the vertical and horizontal resolution etc.
to use adtg_log, you have to find the ADTG_Write function on your camera.
its easy as it usually contains these strings:
"[REG] @@@@@@@@@@@@ Start ADTG[CS:%lx]"
"[REG] ADTG:[%08x] <----- Excel Tab Number"
same for CMOS
EOS M and 650D might be easier to trace, we found working crop mode on that.
yeah nanomad tried, but gdb_setup() failed (return value zero) due to the M having a different IV structure.
my recommendation was
MEM(0x0C) = 0xE59FF000;
before calling gdb_setup().
can you confirm that gdb_setup() works then?
GDB setup hangs my camera.. doing that assignment gives lvalue error in the module.
You need to expand the macro by hand. But overwriting stuff in that memory area causes tons of assertions.
we fixed it tonight.
just curious - you removed the volatile in MEM macro and it worked?
this is not how it is supposed to work :(
can you re-add it?
volatile just ensures that the compiler does *not* optimize the code.
the compiler will read the variable from RAM every time it is read and write back every time is is written.
without volatile, subsequent reads would get optimized and the variable is kept in registers.
btw, can you upload all those logs?
@all:
if you want to help, can you create a map of all registers and their values for every log we have?
i think it is possible to process them with shell scripts and then export it for google spreadsheet.
the last written value should be used as register value to be shown.
tried it for two 5D3 logs, but the register list will show the *first* register value only.
https://docs.google.com/spreadsheet/ccc?key=0AgQ2MOkAZTFHdHdQVFcyMVExZFdNM1A2NnJSYlFhSmc&usp=sharing
After going back, I think the bad boy is the function that updates CMOS regs in the module causing, in turn, all kind of assertions.
Here are the LOGs
https://dl.dropboxusercontent.com/u/15964163/ML/650D.101.ADTG-LOGs.zip
edit: Your google link is read-only
Quote from: g3gg0 on July 02, 2013, 10:08:08 AM
@all:
if you want to help, can you create a map of all registers and their values for every log we have?
Please, I need a "dummy-hints" here.
Obviously I don't need a Step-by-Step guide, but only some sparse hints&tips : What I have to do just to start ? Do I must go to g3gg0 repository, download the ADTG module and makefile, then compile it to my side ?
Also, How it works and what I have to do ? Do I must activate it, and how ? Simply by loading it from modules ml menu ? Do I have to activate also raw video module ? And then, do I must make some actions on my camera in order for the log to record something ? And what actions I must do on my camera ? You are talking about ADTG and CMOS: do they are two different logs ? Or do there is a separate module for CMOS ? And where these logs are saved ? ...
Excuse me for all these questions: I'm a programmer and I work with assembly Language also, and I'm sure when I will manage to be "inside" the workflow, I will be of help. Obviously I will write a "dummy-guide" also for this so Others can help as well ! ;-)
@dlrpgmsvc:
nanomad and i uploaded lgos that contain ADTG register values for specific video modes.
what we now need, is an analysis of those logs, which registers get programmed with which values.
so just to dig the logs, create a map of all registers that are written and show their values like i did in the link i wrote above.
what i have done in this google spreadsheet, is not good as it shows the *first* write only, but we have to mapt he *last* writes.
(reason: registers are first initialized with default values, then the real values=
thats nothing to do on camera, but a logfile analysis.
also interesting is this one:
http://upload.g3gg0.de/pub_files/bd36e0be89208738a38c66b20c9a5538/M_crop_noncrop.html
CARTRIDGE registers comparison between M crop and non-crop modes.
is it related to FPS as they differ?
Quote from: g3gg0 on July 02, 2013, 12:11:34 PM
@dlrpgmsvc:
what i have done in this google spreadsheet, is not good as it shows the *first* write only, but we have to mapt he *last* writes.
(reason: registers are first initialized with default values, then the real values=
Do you mean, for example, line 269 of your spreadsheet is the "first" write and line 271 is the "last write" of the same register id and register address, so first value written is 03 and last is 06 ?
Lets for instance take the first log of yours: I see as the first "02 00C7 1032" so i will search for another occurrence of "02 00C7 xxxx" and then again and again and I stop at the last finding, then this is the *last write* you need ? And so on for the Others values ? And if I find only one occurence ? Do I take it into consideration or I have to delete it ? (many thanks for your patience...)
i just implemented it right before you asked :)
#!/bin/bash
FILE="$1"
if [ -f "./${FILE}" ]; then
cat ${FILE} | grep -e "02 [0-9A-F][0-9A-F][0-9A-F][0-9A-F] [0-9A-F][0-9A-F][0-9A-F][0-9A-F]" | cut -c 31- | sort | sed '1!G;h;$!d' | uniq -w 7 | sed '1!G;h;$!d;' | gawk --non-decimal-data 'function nrzi_decode(reg,value){ val = 0; if(and(value,0x8000)){val=or(val,0x8000);} for(i=0; i<31;i++){ bit=rshift(and(val,lshift(1,30-i+1)),1); val=or(val, xor(bit,and(value,lshift(1,30-i))));} printf "0x%04X;0x%04X;0x%04X\n", reg, val, value; } { nrzi_decode("0x"$1,"0x"$2); }' > ${FILE}_adtg_2.csv
cat ${FILE} | grep -e "04 [0-9A-F][0-9A-F][0-9A-F][0-9A-F] [0-9A-F][0-9A-F][0-9A-F][0-9A-F]" | cut -c 31- | sort | sed '1!G;h;$!d' | uniq -w 7 | sed '1!G;h;$!d;' | gawk --non-decimal-data 'function nrzi_decode(reg,value){ val = 0; if(and(value,0x8000)){val=or(val,0x8000);} for(i=0; i<31;i++){ bit=rshift(and(val,lshift(1,30-i+1)),1); val=or(val, xor(bit,and(value,lshift(1,30-i))));} printf "0x%04X;0x%04X;0x%04X\n", reg, val, value; } { nrzi_decode("0x"$1,"0x"$2); }' > ${FILE}_adtg_4.csv
cat ${FILE} | grep -e "06 [0-9A-F][0-9A-F][0-9A-F][0-9A-F] [0-9A-F][0-9A-F][0-9A-F][0-9A-F]" | cut -c 31- | sort | sed '1!G;h;$!d' | uniq -w 7 | sed '1!G;h;$!d;' | gawk --non-decimal-data 'function nrzi_decode(reg,value){ val = 0; if(and(value,0x8000)){val=or(val,0x8000);} for(i=0; i<31;i++){ bit=rshift(and(val,lshift(1,30-i+1)),1); val=or(val, xor(bit,and(value,lshift(1,30-i))));} printf "0x%04X;0x%04X;0x%04X\n", reg, val, value; } { nrzi_decode("0x"$1,"0x"$2); }' > ${FILE}_adtg_6.csv
cat ${FILE} | grep -e "08 [0-9A-F][0-9A-F][0-9A-F][0-9A-F] [0-9A-F][0-9A-F][0-9A-F][0-9A-F]" | cut -c 31- | sort | sed '1!G;h;$!d' | uniq -w 7 | sed '1!G;h;$!d;' | gawk --non-decimal-data 'function nrzi_decode(reg,value){ val = 0; if(and(value,0x8000)){val=or(val,0x8000);} for(i=0; i<31;i++){ bit=rshift(and(val,lshift(1,30-i+1)),1); val=or(val, xor(bit,and(value,lshift(1,30-i))));} printf "0x%04X;0x%04X;0x%04X\n", reg, val, value; } { nrzi_decode("0x"$1,"0x"$2); }' > ${FILE}_adtg_8.csv
else
echo "Invalid file name"
exit 0;
fi
Quote from: g3gg0 on July 03, 2013, 12:59:09 AM
i just implemented it right before you asked :)
Great ! So no more help needed parsing log files, right ?
So my first question apply again: what I can to do with my camera in order to extract the logs (module compiling? actions to do on camera... etc.), and where I can post them ? ;) I can create a folder inside your spreadsheet with the name of my camera and populate it as you have done, right ? ;)
I can guess: activate your log module - set shutter time, aperture, iso, canon movie resolution and fps - start recording in normal canon movie mode for some seconds - stop recording (so i should have the log files into the SD card, right ? where ?)
Quote from: g3gg0 on June 27, 2013, 10:14:44 AM
using these modules, can someone trace crop mode ADTG configuration on 60D or 600D?
I'm not experienced in building ML myself. I have a 60D. I tried to compile a new autoexec.bin and the adtg_log and trace modules, but when loading them I get this:
(http://s8.postimg.org/ooypc3pyt/VRAM1.png)
Enable GDB in makefile.user
[edit]ok I modified Makefile.user
magiclantern/Makefile.user
ARM_ABI=none-eabi
ARM_PATH=~/arm-toolchain
GCC_VERSION=4.7.3
CONFIG_MODULES = y
CONFIG_TCC = y
CONFIG_PICOC = n
PYTHON = python2.6
CONFIG_TINYPY = Y
CONFIG_GDB = Y
CONFIG_GDBSTUB = Y
cd platform/60D.111/
make clean && make
cd ../../modules/trace/
make clean && make
cd ../../modules/adtg_log/
make clean && make
copy
autoexec.bin -> /
60D_111.sym, adtg_log.mo, trace.mo -> /ml/modules/
(http://s10.postimg.org/ct0m66lvd/error.png)
You don't need tinypy. Check the sym file and see if those symbols are in there.
They are not
[edit:] Got it to work by adding gdb.o to src/Makefile.src
btw I'm using g3gg0's bitbucket
can you check if the gdb code is compiled?
Heh yes, see my edit above. Now how do I use this?
press set on ADTG menu entry in movie menu and switch to movie mode.
then power off the camera.
you now have a log file on your card.
Here you go. All the lines end in VSYNC. I suppose that's not what you need... :'(
/* 00:00:03.276125 */ -------- VSYNC --------
/* 00:00:03.321890 */ -------- VSYNC --------
/* 00:00:03.367163 */ -------- VSYNC --------
...
Also getting ERR70s with
CRASH00.LOG
ASSERT: FALSE
at Memory\Memory.c:188, task adtg_log_task
lv:0 mode:10
Magic Lantern version : v2.3.NEXT.2013Jul03.60D111
Mercurial changeset : 482b1734e293+ (unified) tip
Built on 2013-07-03 16:59:20 by magiclantern@magiclantern-VirtualBox.
Free Memory : 470K + 1037K
It would be of help for all if someone can explain better, with an example for instance, how to find what registers do what. For example by explaining how you have found the right registers and values to implement the dual iso feature.
This will enable all of us with a minimum programming abilities to help digging out this ADTG discovery.
I made the address write to the log so now its relatively easy.
Quote from: 1% on July 18, 2013, 03:22:36 PM
I made the address write to the log so now its relatively easy.
Do we must consider using the G3GG0 debug module here : https://bitbucket.org/g3gg0/magic-lantern/src/6de0d9e9a4d4db70b61149f9c212ba02a7dfd18a/modules/adtg_log?at=unified
or do we must consider using the official one at : https://bitbucket.org/hudson/magic-lantern/src/tip/modules/adtg_log/
What is better ? And where are your latest modifications you are talking about ? Many thanks !
Quote from: dlrpgmsvc on July 19, 2013, 12:18:57 PM
And where are your latest modifications you are talking about ? Many thanks !
Maybe here - https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/commits/all
Quote from: Greg on July 19, 2013, 03:10:38 PM
Maybe here - https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/commits/all
Please, be patient with me: by using this version I have some compiling errors.
I'm using ubuntu virtual machine in Windows, I already successful compile the full magic lantern, but when I launch "make" inside the adtg_log module above, I get this error :
[ CC ] adtg_log.o
/bin/sh: 1: /home/magiclantern/arm-toolchain/bin/arm-none-eabi-gcc4.7.3: not found
make: *** [adtg_log.o] Error 127
I made "make clean" before "make". I copied "makefile.user" inside the adtg module dir and also inside "modules" dir, but the error is still the same.
How can I do ? many thanks !
[EDIT] : Nevermind, solved ! The file which module makefilings refers to is "/home/magiclantern/arm-toolchain/bin/arm-none-eabi-gcc4.7.3" while the existent file is "/home/magiclantern/arm-toolchain/bin/arm-none-eabi-gcc-4.7.3". The reason of this is unknown ! So, a CopyPasta + Renaming did the trick. Strange but true. ;D
Used this version : https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/commits/all
The ML base is the last official Hudson one.
Followed same steps as user "vroem".
I'm on a 550D, ubuntu virtual machine on Windows.
All compilations are ok, but when 550D is fired up, then red solid light and all is blocked. I must slip out the battery to turn off the light.
I need a big assistance, many thanks ! :'(
http://www.magiclantern.fm/forum/index.php?topic=3072.msg60979;topicseen#msg60979
See the last few posts...
Quote from: Stedda on July 22, 2013, 03:34:03 PM
http://www.magiclantern.fm/forum/index.php?topic=3072.msg60979;topicseen#msg60979
See the last few posts...
Many thanks, Stedda ! It seems I choosed the worst moment to start this work on 550D ! >:(
Ok ! I went to solve the 550D lock-up problem, now the problem is this :
Modules load, but there is no ADTG menu entry in movie menu to press "set" on, and the textual modules loading log remains over the liveview even if i turn off global draw, and "show console" option in modules menu is off! I tried to change modes with main dial to photo then return to video mode. But no log written into the sd card. How can I use this log module ? :o
Used this log module version : https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/commits/all
The ML base is the last official Hudson one.
Followed same steps as user "vroem".
I'm on a 550D, ubuntu virtual machine on Windows.
All compilations are ok
I load manually the modules after entering ML menu the first time
The module loading log on screen is the following :
Scanning modules...
Scanning modules...
Load modules...
[ i ] load: ADTG_LOG.MO
[ i ] load: TRACE.MO
Linking..
Register modules...
Load configs...
Init modules...
[ i ] Init: 'adtg_log'
_
It seems it blocks itself into initializing 'adtg_log' module (and this is the reason the log text remains on), what do you think ?
I think problem is inside the following function : "static unsigned int adtg_log_init()" where it blocks itself.
It calls "gdb_setup()" function and then sets a sequence of 4 watchpoints.
It could be the gdb_setup function or the watchpoints settings.
I traced it's inside "gdb_setup()" that all blocks.
I tried to eliminate all the declarations "short" by leaving them plain, because this hanged 550D on "boot_hack,c", but this didn't produced benefical effects, and the freezing still occour.
New clues indicates that the block happens BEFORE entering the function "static unsigned int adtg_log_init()".
This is odd: what is called BEFORE module initialization function ? :o
I commented out completely all the init routine and placed inside her a well "NotifyBox", but it doesn't shows up at Runtime !
Do I'm choosing the wrong trace down method or do the problem is really before init routine ?
Now I tried the log module that come with Hudson unified: same exact problem. Even by getting rid of "short" declarations !
Now tried to eliminate the adtg_log module from the sd card : the trace module load flawlessy and then says OK near his name !
This is without any doubt a adtg_log module problem!
I'm currently investigating on this...
Side problem : I can see every camera model has different registers addresses, so... do 550D also have his own ? And how to discover them ? :o
550d 1.0.9
19259c ( pTgRegister->dwSrFstAdtg[4] & 0xFFFF0000 ) == 0x81720000
1925dc ( pTgRegister->dwSrFstAdtg[5] & 0xFFFF0000 ) == 0x81730000
26efb4 [REG] @@@@@@@@@@@@ Start ADTG[CS:%lx]
26efe8 [REG] ADTG:[0x%08x]
26effc [REG] ADTG:[%08x] <----- Excel Tab Number
26f270 [REG] ############ Start CMOS
26f29c [REG] CMOS:[0x%04x]
26f2b0 [REG] CMOS:[%04x] <----- Excel Tab Number
Whoa ! I managed to solve the problem ! Now module loads ok ! ;)
Do this procedure is correct to use log module ? (with all ML video and helper functions disabled) :
[1] Enter ML menu
[2] Enable adtg from MOVIE menu
[3] Exit ML menu
[4] Start video recording 1920x1080 25p
[5] Stop video recording
[6] Enter ML menu
[7] Disable adtg from MOVIE menu
[8] Shut off camera
I obtain a "ADTG.BIN" file inside the photos folder on SD.
Do this procedure is right ?
For 550D, the address for ADTG function is at 0xff27ee34, and for CMOS, 0xff27f028.
I didn't try these numbers, and I have no idea how Indy got these RAM addresses. Afaik, the 550D runs all the code from ROM (but there may be exceptions).
Quote from: a1ex on July 24, 2013, 09:04:08 PM
For 550D, the address for ADTG function is at 0xff27ee34, and for CMOS, 0xff27f028.
I didn't try these numbers, and I have no idea how Indy got these RAM addresses. Afaik, the 550D runs all the code from ROM (but there may be exceptions).
Great ! Many thanks A1ex ! It works !
So, the trick is to find the nearest point around the strings (not the exact string start address) where there is the following instruction :
[1] For CMOS (it is before the strings) : STMFD SP!, {R4-R8, LR}
[2] For ADTG (it is before the strings) : STMFD SP!, {R4-R10, LR}
Do this is correct ?
And for CARTRIDGE registers and Others (like the first strange two lines found by Indy) do it will be similar ?
Yes. The stmfd is usually the function entry.
In some rare cases you will find a mov before.
The best is to have a database that is neraly completely disassembled (a lot of 'P' presses to do ;) )
Then you see where the xrefs go.
Cardridge is the same. But its not that important. We focus on adtg at the moment.
Very good!
I have some toughts :
1 - these adtg registers are yet indirectly used for fps-shutter speed override and they have the same limitations (low fps still equals to low shutter speeds)
2 - resulutions can only be decreased but not increased (as for latest tests), and lower Canon in-camera standard resolutions of 720p and 480p are more than enough
So, the only real useful discovery (so far) is the CMOS16 register (only in newer cameras models) to obtain dual iso feature.
It seems we cannot squeeze nothing more out of them, at least for now, right?
This is just to know if the works for dumps on other camera models will be worthwile, or if it is better to first study the behavior of these registers on yet dumped models, until something useful will eventually arise.
Or if someone has yet some ideas to implement with these registers.
I've compiled adtg_log and it loads ok but I can't get it to save a log file on the 50D. Any ideas? ???
Quote from: Andy600 on July 26, 2013, 12:03:37 PM
I've compiled adtg_log and it loads ok but I can't get it to save a log file on the 50D. Any ideas? ???
Do you see the cmos values running on screen (not zeroes values) ?
Quote from: dlrpgmsvc on July 26, 2013, 12:56:56 PM
Do you see the cmos values running on screen (not zeroes values) ?
I see 8x cmos values. Not sure what you mean by 'running'? They don't change.
The 50D doesn't have a dedicated Movie mode so I switch adtg log on, enabled movie record and powered off. No logs on the card. I've tried recording a bit too and also tried with raw video enabled and disabled.
Quote from: Andy600 on July 26, 2013, 01:07:42 PM
I see 8x cmos values. Not sure what you mean by 'running'? They don't change.
When you enable adtg_log and then you exit from ml menu (back to liveview mode), you should see the 8 cmos values printed onto the viewfinder that change continuously. Do this happens ? It should. If you see the values unchanged and fixed at 0 value (on vf, not inside the menu), then it's a problem of start_cmos hardcoded value: are you sure it's correct ?
Quote from: dlrpgmsvc on July 26, 2013, 01:14:10 PM
When you enable adtg_log and then you exit from ml menu (back to liveview mode), you should see the 8 cmos values printed onto the viewfinder that change continuously. Do this happens ? It should. If you see the values unchanged and fixed at 0 value (on vf, not inside the menu), then it's a problem of start_cmos hardcoded value: are you sure it's correct ?
Ok, no they don't change. Where do you change the start_cmos value?
Quote from: Andy600 on July 26, 2013, 01:18:37 PM
Ok, no they don't change. Where do you change the start_cmos value?
it is at start of "adtg_log.c" inside "src" and then "modules" directory
Quote from: dlrpgmsvc on July 26, 2013, 01:20:27 PM
it is at start of "adtg_log.c" inside "src" and then "modules" directory
Ok, some values have been set for the 50D in adtg_log.c but must be wrong. I don't know where or how to find the correct values. Looked in stubs etc but cant see any cmos addresses. Does it mean dumping the FW to find the correct numbers?
Quote from: Andy600 on July 26, 2013, 01:28:45 PM
Ok, some values have been set for the 50D in adtg_log.c but must be wrong. I don't know where or how to find the correct values. Looked in stubs etc but cant see any cmos addresses. Does it mean dumping the FW to find the correct numbers?
Yes... however I have read that 1% managed to dump 50D and found the values, for sure. So, you can ask him or disassemble by yourself the ROM. If you decide this latter option, I can assist you.
Quote from: dlrpgmsvc on July 26, 2013, 02:06:17 PM
Yes... however I have read that 1% managed to dump 50D and found the values, for sure. So, you can ask him or disassemble by yourself the ROM. If you decide this latter option, I can assist you.
The values must be the ones 1% added (as I'm using Tragic Lantern source code). Probably best to wait for him to come back online then.
Thanks anyway :)
Quote
//~ #define ADTG_WRITE_FUNC 0xFFA11FDC
//~ #define CMOS_WRITE_FUNC 0xFFA12190
//~ #define CMOS16_WRITE_FUNC 0
//~ #define CARTRIDGE_WRITE_FUNC 0
Thats 50D.
So, what if i try poking the Digic on the 6D?
Any hint? I might have some free time tomorrow.
If you give me a hand i can try and do a bit of trial and error.
Is it worth trying this on a 60D?
How do I find these values for the 500D?
ADTG_WRITE_FUNC
CMOS_WRITE_FUNC
CMOS16_WRITE_FUNC
CARTRIDGE_WRITE_FUNC
Quote from: Greg on August 14, 2013, 01:07:14 AM
How do I find these values for the 500D?
ADTG_WRITE_FUNC
CMOS_WRITE_FUNC
CMOS16_WRITE_FUNC
CARTRIDGE_WRITE_FUNC
you have ida right or arm console for firmware analysis
Quote from: coutts on August 14, 2013, 02:51:44 PM
you have ida right or arm console for firmware analysis
I do not know how to do it :o
I found such a value, I do not know if they are correct.
500D:
#define ADTG_WRITE_FUNC 0xFF23FB4C
#define CMOS_WRITE_FUNC 0xFF23FB90
Did I do something wrong?
Traceback (most recent call last):
File "parse_bin.py", line 21, in <module>
with open(filename,"rb") as f:
TypeError: coercing to Unicode: need string or buffer, NoneType found
edit:
It does not look good.
[----------- VSYNC ------------]
[----------- VSYNC ------------]
[----------- VSYNC ------------]
[----------- VSYNC ------------]
[----------- VSYNC ------------]
[----------- VSYNC ------------]
[----------- VSYNC ------------]
//60D
//~ #define ADTG_WRITE_FUNC 0xFF2C9788 //"[REG] @@@@@@@@@@@@ Start ADTG[CS:%lx]"
//~ #define CMOS_WRITE_FUNC 0xFF2C997C //"[REG] ############ Start CMOS"
//~ #define CMOS16_WRITE_FUNC 0x0 //"[REG] ############ Start CMOS16 OC_KICK"
//~ #define CARTRIDGE_WRITE_FUNC 0xFF402884 //CARTRIDGE1_ADDR Adder ==> 0x%
For 500D just look for the strings.. im not sure on cartridge.. I've never seen anything come out of that.
I lost a couple of hours and found nothing.
Each time:
[----------- VSYNC ------------]
[----------- VSYNC ------------]
[----------- VSYNC ------------]
[----------- VSYNC ------------]
[----------- VSYNC ------------]
[----------- VSYNC ------------]
[----------- VSYNC ------------]
Have the firmware? I can double check them.
Maybe it?
500D
#define ADTG_WRITE_FUNC 0xFF236538
#define CMOS_WRITE_FUNC 0xFF236688
Quote from: Greg on August 26, 2013, 03:08:07 PM
Maybe it?
500D
#define ADTG_WRITE_FUNC 0xFF236538
#define CMOS_WRITE_FUNC 0xFF236688
Tested, these are not it for 500D
Those land in the middle of functions for me.... I had to cut your rom and add the correct start address I think. If you have FFFFFFFF at the start your addresses will be off which is probably why its not working for you.
Stuff seems to be matching the stubs and I'm running some scripts on the file so I don't have to hunt so much... but I found the strings will post them when the scripts are done.
500D
//~ #define ADTG_WRITE_FUNC 0xFF22F8F4 //"[REG] @@@@@@@@@@@@ Start ADTG[CS:%lx]"
//~ #define CMOS_WRITE_FUNC 0xFF22F9DC //"[REG] ############ Start CMOS"
//~ #define CMOS16_WRITE_FUNC 0x0 //"[REG] ############ Start CMOS16 OC_KICK"
//~ #define CARTRIDGE_WRITE_FUNC 0x0 //CARTRIDGE1_ADDR Adder ==> 0x%
Didn't find any cartridge but thats ok I guess... use my module source if you want it to print regs and just uncomment the camera you're using.
Quote from: Greg on August 18, 2013, 05:07:41 PM
I found such a value, I do not know if they are correct.
500D:
#define ADTG_WRITE_FUNC 0xFF23FB4C
#define CMOS_WRITE_FUNC 0xFF23FB90
These are not them either.
Quote from: 1% on August 26, 2013, 03:38:09 PM
Those land in the middle of functions for me.... I had to cut your rom and add the correct start address I think. If you have FFFFFFFF at the start your addresses will be off which is probably why its not working for you.
Stuff seems to be matching the stubs and I'm running some scripts on the file so I don't have to hunt so much... but I found the strings will post them when the scripts are done.
Sounds good 1%, I will take things from there Greg since I still have my 500D laying around somewhere in the dust ;)
Quote from: 1% on August 26, 2013, 03:38:09 PM
500D
//~ #define ADTG_WRITE_FUNC 0xFF22F8F4 //"[REG] @@@@@@@@@@@@ Start ADTG[CS:%lx]"
//~ #define CMOS_WRITE_FUNC 0xFF22F9DC //"[REG] ############ Start CMOS"
//~ #define CMOS16_WRITE_FUNC 0x0 //"[REG] ############ Start CMOS16 OC_KICK"
//~ #define CARTRIDGE_WRITE_FUNC 0x0 //CARTRIDGE1_ADDR Adder ==> 0x%
This work!
Thanks! ;D
1/200 F4.5 ISO 100 no LV (photo mode) :
[ADTG3] Reg: 0007 Data: 4046 (16454) [ADTG3] Reg: 0005 Data: 7F84 (32644)
[ADTG3] Reg: 0002 Data: 804C (32844) [ADTG3] Reg: 0003 Data: FF88 (65416)
[ADTG3] Reg: 0002 Data: A44C (42060) [ADTG3] Reg: 0003 Data: C788 (51080)
[ADTG3] Reg: 0000 Data: 0111 ( 273) [ADTG3] Reg: 0000 Data: 01E1 ( 481)
[ADTG3] Reg: 0001 Data: E004 (57348) [ADTG3] Reg: 0001 Data: BFF8 (49144)
[ADTG3] Reg: 0003 Data: 0111 ( 273) [ADTG3] Reg: 0002 Data: 01E1 ( 481)
[ADTG3] Reg: 0004 Data: 0800 ( 2048) [ADTG3] Reg: 0007 Data: 0FFF ( 4095)
[ADTG3] Reg: 0006 Data: 7000 (28672) [ADTG3] Reg: 0004 Data: 5FFF (24575)
[ADTG3] Reg: 0009 Data: 3212 (12818) [ADTG3] Reg: 000E Data: 23E3 ( 9187)
[ADTG3] Reg: 000A Data: 8000 (32768) [ADTG3] Reg: 000C Data: FFFF (65535)
[ADTG3] Reg: 000B Data: B212 (45586) [ADTG3] Reg: 000D Data: DC1C (56348)
[ADTG3] Reg: 000D Data: 7800 (30720) [ADTG3] Reg: 0009 Data: 5000 (20480)
[ADTG3] Reg: 0010 Data: 0828 ( 2088) [ADTG3] Reg: 001F Data: 0FCF ( 4047)
[ADTG3] Reg: 0011 Data: 0828 ( 2088) [ADTG3] Reg: 001E Data: 0FCF ( 4047)
[ADTG3] Reg: 0012 Data: 003B ( 59) [ADTG3] Reg: 001C Data: 002D ( 45)
[ADTG3] Reg: 0013 Data: 8004 (32772) [ADTG3] Reg: 001D Data: FFF8 (65528)
[ADTG3] Reg: 0017 Data: 0030 ( 48) [ADTG3] Reg: 001A Data: 0020 ( 32)
[ADTG3] Reg: 1280 Data: 0001 ( 1) [ADTG3] Reg: 1CFF Data: 0001 ( 1)
[ADTG3] Reg: 11A4 Data: 2C01 (11265) [ADTG3] Reg: 1EC7 Data: 37FE (14334)
[ADTG3] Reg: 102C Data: 0001 ( 1) [ADTG3] Reg: 1FC8 Data: 0001 ( 1)
[ADTG3] Reg: 102C Data: 0000 ( 0) [ADTG3] Reg: 1FC8 Data: 0000 ( 0)
[ADTG3] Reg: 1130 Data: 0001 ( 1) [ADTG3] Reg: 1E20 Data: 0001 ( 1)
[ADTG3] Reg: 1130 Data: 0000 ( 0) [ADTG3] Reg: 1E20 Data: 0000 ( 0)
[ADTG3] Reg: 1003 Data: 3000 (12288) [ADTG3] Reg: 1FFD Data: 2000 ( 8192)
[ADTG3] Reg: 1006 Data: 068B ( 1675) [ADTG3] Reg: 1FFB Data: 04F2 ( 1266)
[ADTG3] Reg: 100A Data: 0001 ( 1) [ADTG3] Reg: 1FF3 Data: 0001 ( 1)
[ADTG3] Reg: 1026 Data: 0006 ( 6) [ADTG3] Reg: 1FC4 Data: 0004 ( 4)
[ADTG3] Reg: 1027 Data: 0019 ( 25) [ADTG3] Reg: 1FC5 Data: 0011 ( 17)
[ADTG3] Reg: 102F Data: 1E9A ( 7834) [ADTG3] Reg: 1FCA Data: 14EC ( 5356)
[ADTG3] Reg: 1030 Data: 1E85 ( 7813) [ADTG3] Reg: 1FDF Data: 14F9 ( 5369)
[ADTG3] Reg: 104A Data: 1F80 ( 8064) [ADTG3] Reg: 1F8C Data: 1500 ( 5376)
[ADTG3] Reg: 104B Data: 1F93 ( 8083) [ADTG3] Reg: 1F8D Data: 151D ( 5405)
[ADTG3] Reg: 1069 Data: 1F8C ( 8076) [ADTG3] Reg: 1FB1 Data: 1508 ( 5384)
[ADTG3] Reg: 106A Data: 1F9F ( 8095) [ADTG3] Reg: 1FB3 Data: 1515 ( 5397)
[ADTG3] Reg: 106F Data: 0002 ( 2) [ADTG3] Reg: 1FB5 Data: 0003 ( 3)
[ADTG3] Reg: 1070 Data: 000A ( 10) [ADTG3] Reg: 1FA0 Data: 000C ( 12)
[ADTG3] Reg: 1081 Data: 000A ( 10) [ADTG3] Reg: 1F01 Data: 000C ( 12)
[ADTG3] Reg: 1082 Data: 0001 ( 1) [ADTG3] Reg: 1F03 Data: 0001 ( 1)
[ADTG3] Reg: 1088 Data: 0017 ( 23) [ADTG3] Reg: 1F0F Data: 001A ( 26)
[ADTG3] Reg: 1089 Data: 01C5 ( 453) [ADTG3] Reg: 1F0E Data: 0179 ( 377)
[ADTG3] Reg: 1097 Data: 001A ( 26) [ADTG3] Reg: 1F1A Data: 0013 ( 19)
[ADTG3] Reg: 1098 Data: 1E97 ( 7831) [ADTG3] Reg: 1F10 Data: 14E5 ( 5349)
[ADTG3] Reg: 109D Data: 00F0 ( 240) [ADTG3] Reg: 1F16 Data: 00A0 ( 160)
[ADTG3] Reg: 109E Data: 00A8 ( 168) [ADTG3] Reg: 1F14 Data: 00CF ( 207)
[ADTG3] Reg: 109F Data: 01C5 ( 453) [ADTG3] Reg: 1F15 Data: 0179 ( 377)
[ADTG3] Reg: 10A0 Data: 0175 ( 373) [ADTG3] Reg: 1F3F Data: 01A6 ( 422)
[ADTG3] Reg: 10AE Data: 0001 ( 1) [ADTG3] Reg: 1F34 Data: 0001 ( 1)
[ADTG3] Reg: 10AF Data: 0017 ( 23) [ADTG3] Reg: 1F35 Data: 001A ( 26)
[ADTG3] Reg: 10B0 Data: 00D1 ( 209) [ADTG3] Reg: 1F20 Data: 009E ( 158)
[ADTG3] Reg: 10B1 Data: 01CD ( 461) [ADTG3] Reg: 1F21 Data: 0176 ( 374)
[ADTG3] Reg: 10C9 Data: 0001 ( 1) [ADTG3] Reg: 1F71 Data: 0001 ( 1)
[ADTG3] Reg: 10CA Data: 0017 ( 23) [ADTG3] Reg: 1F73 Data: 001A ( 26)
[ADTG3] Reg: 10CB Data: 0068 ( 104) [ADTG3] Reg: 1F72 Data: 004F ( 79)
[ADTG3] Reg: 10CC Data: 00DF ( 223) [ADTG3] Reg: 1F77 Data: 0095 ( 149)
[ADTG3] Reg: 10E5 Data: 0001 ( 1) [ADTG3] Reg: 1F46 Data: 0001 ( 1)
[ADTG3] Reg: 10E6 Data: 006F ( 111) [ADTG3] Reg: 1F44 Data: 004A ( 74)
[ADTG3] Reg: 1101 Data: 0017 ( 23) [ADTG3] Reg: 1E01 Data: 001A ( 26)
[ADTG3] Reg: 1102 Data: 01C5 ( 453) [ADTG3] Reg: 1E03 Data: 0179 ( 377)
[ADTG3] Reg: 113A Data: 0100 ( 256) [ADTG3] Reg: 1E2C Data: 01FF ( 511)
[ADTG3] Reg: 114D Data: 01C4 ( 452) [ADTG3] Reg: 1E76 Data: 0178 ( 376)
[ADTG3] Reg: 114E Data: 01C7 ( 455) [ADTG3] Reg: 1E74 Data: 017A ( 378)
[ADTG3] Reg: 114F Data: 01C2 ( 450) [ADTG3] Reg: 1E75 Data: 017C ( 380)
[ADTG3] Reg: 1155 Data: 0010 ( 16) [ADTG3] Reg: 1E66 Data: 001F ( 31)
[ADTG3] Reg: 1170 Data: 0051 ( 81) [ADTG3] Reg: 1E5F Data: 0061 ( 97)
[ADTG3] Reg: 117A Data: 0000 ( 0) [ADTG3] Reg: 1E53 Data: 0000 ( 0)
[ADTG3] Reg: 117B Data: 0000 ( 0) [ADTG3] Reg: 1E52 Data: 0000 ( 0)
[ADTG3] Reg: 11A0 Data: 0000 ( 0) [ADTG3] Reg: 1EC0 Data: 0000 ( 0)
[ADTG3] Reg: 11A2 Data: 0001 ( 1) [ADTG3] Reg: 1EC3 Data: 0001 ( 1)
[ADTG3] Reg: 11A8 Data: 0001 ( 1) [ADTG3] Reg: 1ECF Data: 0001 ( 1)
[ADTG3] Reg: 11A9 Data: 0000 ( 0) [ADTG3] Reg: 1ECE Data: 0000 ( 0)
[ADTG3] Reg: 11AA Data: 0AC6 ( 2758) [ADTG3] Reg: 1ECC Data: 0C84 ( 3204)
[ADTG3] Reg: 11AB Data: 01C7 ( 455) [ADTG3] Reg: 1ECD Data: 017A ( 378)
[ADTG3] Reg: 11AC Data: 01C1 ( 449) [ADTG3] Reg: 1EC8 Data: 017E ( 382)
[ADTG3] Reg: 1201 Data: 0000 ( 0) [ADTG3] Reg: 1C01 Data: 0000 ( 0)
[ADTG3] Reg: 1202 Data: 0000 ( 0) [ADTG3] Reg: 1C03 Data: 0000 ( 0)
[ADTG3] Reg: 1203 Data: 0000 ( 0) [ADTG3] Reg: 1C02 Data: 0000 ( 0)
[ADTG3] Reg: 1204 Data: 0000 ( 0) [ADTG3] Reg: 1C07 Data: 0000 ( 0)
[ADTG3] Reg: 1205 Data: 0000 ( 0) [ADTG3] Reg: 1C06 Data: 0000 ( 0)
[ADTG3] Reg: 1206 Data: 0000 ( 0) [ADTG3] Reg: 1C04 Data: 0000 ( 0)
[ADTG3] Reg: 1207 Data: 0004 ( 4) [ADTG3] Reg: 1C05 Data: 0007 ( 7)
[ADTG3] Reg: 1208 Data: 0008 ( 8) [ADTG3] Reg: 1C0F Data: 000F ( 15)
[ADTG3] Reg: 1209 Data: 0008 ( 8) [ADTG3] Reg: 1C0E Data: 000F ( 15)
[ADTG3] Reg: 120A Data: 0AC6 ( 2758) [ADTG3] Reg: 1C0C Data: 0C84 ( 3204)
[ADTG3] Reg: 1219 Data: 0149 ( 329) [ADTG3] Reg: 1C11 Data: 018E ( 398)
[ADTG3] Reg: 121A Data: 0159 ( 345) [ADTG3] Reg: 1C13 Data: 0191 ( 401)
[ADTG3] Reg: 1231 Data: 0000 ( 0) [ADTG3] Reg: 1C21 Data: 0000 ( 0)
[ADTG3] Reg: 1232 Data: 0000 ( 0) [ADTG3] Reg: 1C23 Data: 0000 ( 0)
[ADTG3] Reg: 1233 Data: 0176 ( 374) [ADTG3] Reg: 1C22 Data: 01A4 ( 420)
[ADTG3] Reg: 1234 Data: 07D6 ( 2006) [ADTG3] Reg: 1C27 Data: 0564 ( 1380)
[ADTG3] Reg: 1235 Data: 0176 ( 374) [ADTG3] Reg: 1C26 Data: 01A4 ( 420)
[ADTG3] Reg: 1236 Data: 07D6 ( 2006) [ADTG3] Reg: 1C24 Data: 0564 ( 1380)
[ADTG3] Reg: 1237 Data: 0176 ( 374) [ADTG3] Reg: 1C25 Data: 01A4 ( 420)
[ADTG3] Reg: 1238 Data: 07D6 ( 2006) [ADTG3] Reg: 1C2F Data: 0564 ( 1380)
[ADTG3] Reg: 1243 Data: 02CE ( 718) [ADTG3] Reg: 1C7D Data: 0374 ( 884)
[ADTG3] Reg: 1245 Data: 000C ( 12) [ADTG3] Reg: 1C79 Data: 0008 ( 8)
[ADTG3] Reg: 1248 Data: 023E ( 574) [ADTG3] Reg: 1C70 Data: 03D4 ( 980)
[ADTG3] Reg: 1249 Data: 0234 ( 564) [ADTG3] Reg: 1C71 Data: 03D8 ( 984)
[ADTG3] Reg: 124A Data: 010E ( 270) [ADTG3] Reg: 1C73 Data: 01F4 ( 500)
[ADTG3] Reg: 124B Data: 0104 ( 260) [ADTG3] Reg: 1C72 Data: 01F8 ( 504)
[ADTG3] Reg: 124C Data: 010E ( 270) [ADTG3] Reg: 1C77 Data: 01F4 ( 500)
[ADTG3] Reg: 124D Data: 0104 ( 260) [ADTG3] Reg: 1C76 Data: 01F8 ( 504)
[ADTG3] Reg: 124E Data: 010E ( 270) [ADTG3] Reg: 1C74 Data: 01F4 ( 500)
[ADTG3] Reg: 124F Data: 0104 ( 260) [ADTG3] Reg: 1C75 Data: 01F8 ( 504)
[ADTG3] Reg: 1264 Data: 000C ( 12) [ADTG3] Reg: 1C47 Data: 0008 ( 8)
[ADTG3] Reg: 1265 Data: 000F ( 15) [ADTG3] Reg: 1C46 Data: 000A ( 10)
[ADTG3] Reg: 1266 Data: 000A ( 10) [ADTG3] Reg: 1C44 Data: 000C ( 12)
[ADTG3] Reg: 1267 Data: 0009 ( 9) [ADTG3] Reg: 1C45 Data: 000E ( 14)
[ADTG3] Reg: 1279 Data: 91CB (37323) [ADTG3] Reg: 1C51 Data: E172 (57714)
[ADTG3] Reg: 127A Data: 0200 ( 512) [ADTG3] Reg: 1C53 Data: 03FF ( 1023)
[ADTG3] Reg: 0013 Data: 8004 (32772) [ADTG3] Reg: 001D Data: FFF8 (65528)
[ADTG3] Reg: 0014 Data: 0000 ( 0) [ADTG3] Reg: 0018 Data: 0000 ( 0)
[ADTG3] Reg: 0015 Data: 0000 ( 0) [ADTG3] Reg: 0019 Data: 0000 ( 0)
[CMOS] Reg: 0 Data: 000 ( 0) [CMOS] Reg: 0 Data: 000 ( 0)
[CMOS] Reg: 1 Data: 001 ( 1) [CMOS] Reg: 1 Data: 001 ( 1)
[CMOS] Reg: 2 Data: 000 ( 0) [CMOS] Reg: 2 Data: 000 ( 0)
[CMOS] Reg: 3 Data: 810 (2064) [CMOS] Reg: 3 Data: FE0 (4064)
[CMOS] Reg: 4 Data: C05 (3077) [CMOS] Reg: 4 Data: 806 (2054)
[CMOS] Reg: 5 Data: 000 ( 0) [CMOS] Reg: 5 Data: 000 ( 0)
[CMOS] Reg: 6 Data: 081 ( 129) [CMOS] Reg: 6 Data: 0FE ( 254)
[ADTG3] Reg: 1000 Data: 0003 ( 3) [ADTG3] Reg: 1FFF Data: 0002 ( 2)
[ADTG3] Reg: 1200 Data: 0002 ( 2) [ADTG3] Reg: 1C00 Data: 0003 ( 3)
[ADTG3] Reg: 124A Data: 010E ( 270) [ADTG3] Reg: 1C73 Data: 01F4 ( 500)
[ADTG3] Reg: 124B Data: 0104 ( 260) [ADTG3] Reg: 1C72 Data: 01F8 ( 504)
[ADTG3] Reg: 124C Data: 010E ( 270) [ADTG3] Reg: 1C77 Data: 01F4 ( 500)
[ADTG3] Reg: 124D Data: 0104 ( 260) [ADTG3] Reg: 1C76 Data: 01F8 ( 504)
[ADTG3] Reg: 124E Data: 010E ( 270) [ADTG3] Reg: 1C74 Data: 01F4 ( 500)
[ADTG3] Reg: 124F Data: 0104 ( 260) [ADTG3] Reg: 1C75 Data: 01F8 ( 504)
[ADTG3] Reg: 1026 Data: 0006 ( 6) [ADTG3] Reg: 1FC4 Data: 0004 ( 4)
[ADTG3] Reg: 1027 Data: 0019 ( 25) [ADTG3] Reg: 1FC5 Data: 0011 ( 17)
[ADTG3] Reg: 1097 Data: 001A ( 26) [ADTG3] Reg: 1F1A Data: 0013 ( 19)
[ADTG3] Reg: 1098 Data: 1E97 ( 7831) [ADTG3] Reg: 1F10 Data: 14E5 ( 5349)
[ADTG3] Reg: 106C Data: 0000 ( 0) [ADTG3] Reg: 1FB7 Data: 0000 ( 0)
[ADTG3] Reg: 109A Data: 0000 ( 0) [ADTG3] Reg: 1F13 Data: 0000 ( 0)
[ADTG3] Reg: 1000 Data: 0005 ( 5) [ADTG3] Reg: 1FFF Data: 0006 ( 6)
[ADTG3] Reg: 1200 Data: 0001 ( 1) [ADTG3] Reg: 1C00 Data: 0001 ( 1)
[ADTG3] Reg: 1113 Data: 0000 ( 0) [ADTG3] Reg: 1E1D Data: 0000 ( 0)
[ADTG3] Reg: 0009 Data: 2B0B (11019) [ADTG3] Reg: 000E Data: 320D (12813)
[ADTG3] Reg: 000B Data: AB0B (43787) [ADTG3] Reg: 000D Data: CDF2 (52722)
[ADTG3] Reg: 0000 Data: 0149 ( 329) [ADTG3] Reg: 0000 Data: 018E ( 398)
[ADTG3] Reg: 0003 Data: 014A ( 330) [ADTG3] Reg: 0002 Data: 018C ( 396)
[ADTG3] Reg: 0013 Data: 8000 (32768) [ADTG3] Reg: 001D Data: FFFF (65535)
[ADTG3] Reg: 0002 Data: E44C (58444) [ADTG3] Reg: 0003 Data: B877 (47223)
[CMOS] Reg: 0 Data: 000 ( 0) [CMOS] Reg: 0 Data: 000 ( 0)
[ADTG3] Reg: 1170 Data: 0011 ( 17) [ADTG3] Reg: 1E5F Data: 001E ( 30)
[ADTG3] Reg: 1000 Data: 0000 ( 0) [ADTG3] Reg: 1FFF Data: 0000 ( 0)
[ADTG3] Reg: 1200 Data: 0000 ( 0) [ADTG3] Reg: 1C00 Data: 0000 ( 0)
[ADTG3] Reg: 1170 Data: 0051 ( 81) [ADTG3] Reg: 1E5F Data: 0061 ( 97)
[ADTG3] Reg: 0013 Data: 8004 (32772) [ADTG3] Reg: 001D Data: FFF8 (65528)
1/200 F4.5 ISO 200 no LV (photo mode) :
[ADTG3] Reg: 0007 Data: 4046 (16454) [ADTG3] Reg: 0005 Data: 7F84 (32644)
[ADTG3] Reg: 0002 Data: 804C (32844) [ADTG3] Reg: 0003 Data: FF88 (65416)
[ADTG3] Reg: 0002 Data: A44C (42060) [ADTG3] Reg: 0003 Data: C788 (51080)
[ADTG3] Reg: 0000 Data: 0111 ( 273) [ADTG3] Reg: 0000 Data: 01E1 ( 481)
[ADTG3] Reg: 0001 Data: E004 (57348) [ADTG3] Reg: 0001 Data: BFF8 (49144)
[ADTG3] Reg: 0003 Data: 0111 ( 273) [ADTG3] Reg: 0002 Data: 01E1 ( 481)
[ADTG3] Reg: 0004 Data: 0800 ( 2048) [ADTG3] Reg: 0007 Data: 0FFF ( 4095)
[ADTG3] Reg: 0006 Data: 7000 (28672) [ADTG3] Reg: 0004 Data: 5FFF (24575)
[ADTG3] Reg: 0009 Data: 3212 (12818) [ADTG3] Reg: 000E Data: 23E3 ( 9187)
[ADTG3] Reg: 000A Data: 8000 (32768) [ADTG3] Reg: 000C Data: FFFF (65535)
[ADTG3] Reg: 000B Data: B212 (45586) [ADTG3] Reg: 000D Data: DC1C (56348)
[ADTG3] Reg: 000D Data: 7800 (30720) [ADTG3] Reg: 0009 Data: 5000 (20480)
[ADTG3] Reg: 0010 Data: 0828 ( 2088) [ADTG3] Reg: 001F Data: 0FCF ( 4047)
[ADTG3] Reg: 0011 Data: 0828 ( 2088) [ADTG3] Reg: 001E Data: 0FCF ( 4047)
[ADTG3] Reg: 0012 Data: 003B ( 59) [ADTG3] Reg: 001C Data: 002D ( 45)
[ADTG3] Reg: 0013 Data: 8004 (32772) [ADTG3] Reg: 001D Data: FFF8 (65528)
[ADTG3] Reg: 0017 Data: 0030 ( 48) [ADTG3] Reg: 001A Data: 0020 ( 32)
[ADTG3] Reg: 1280 Data: 0001 ( 1) [ADTG3] Reg: 1CFF Data: 0001 ( 1)
[ADTG3] Reg: 11A4 Data: 2C01 (11265) [ADTG3] Reg: 1EC7 Data: 37FE (14334)
[ADTG3] Reg: 102C Data: 0001 ( 1) [ADTG3] Reg: 1FC8 Data: 0001 ( 1)
[ADTG3] Reg: 102C Data: 0000 ( 0) [ADTG3] Reg: 1FC8 Data: 0000 ( 0)
[ADTG3] Reg: 1130 Data: 0001 ( 1) [ADTG3] Reg: 1E20 Data: 0001 ( 1)
[ADTG3] Reg: 1130 Data: 0000 ( 0) [ADTG3] Reg: 1E20 Data: 0000 ( 0)
[ADTG3] Reg: 1003 Data: 3000 (12288) [ADTG3] Reg: 1FFD Data: 2000 ( 8192)
[ADTG3] Reg: 1006 Data: 068B ( 1675) [ADTG3] Reg: 1FFB Data: 04F2 ( 1266)
[ADTG3] Reg: 100A Data: 0001 ( 1) [ADTG3] Reg: 1FF3 Data: 0001 ( 1)
[ADTG3] Reg: 1026 Data: 0006 ( 6) [ADTG3] Reg: 1FC4 Data: 0004 ( 4)
[ADTG3] Reg: 1027 Data: 0019 ( 25) [ADTG3] Reg: 1FC5 Data: 0011 ( 17)
[ADTG3] Reg: 102F Data: 1E9A ( 7834) [ADTG3] Reg: 1FCA Data: 14EC ( 5356)
[ADTG3] Reg: 1030 Data: 1E85 ( 7813) [ADTG3] Reg: 1FDF Data: 14F9 ( 5369)
[ADTG3] Reg: 104A Data: 1F80 ( 8064) [ADTG3] Reg: 1F8C Data: 1500 ( 5376)
[ADTG3] Reg: 104B Data: 1F93 ( 8083) [ADTG3] Reg: 1F8D Data: 151D ( 5405)
[ADTG3] Reg: 1069 Data: 1F8C ( 8076) [ADTG3] Reg: 1FB1 Data: 1508 ( 5384)
[ADTG3] Reg: 106A Data: 1F9F ( 8095) [ADTG3] Reg: 1FB3 Data: 1515 ( 5397)
[ADTG3] Reg: 106F Data: 0002 ( 2) [ADTG3] Reg: 1FB5 Data: 0003 ( 3)
[ADTG3] Reg: 1070 Data: 000A ( 10) [ADTG3] Reg: 1FA0 Data: 000C ( 12)
[ADTG3] Reg: 1081 Data: 000A ( 10) [ADTG3] Reg: 1F01 Data: 000C ( 12)
[ADTG3] Reg: 1082 Data: 0001 ( 1) [ADTG3] Reg: 1F03 Data: 0001 ( 1)
[ADTG3] Reg: 1088 Data: 0017 ( 23) [ADTG3] Reg: 1F0F Data: 001A ( 26)
[ADTG3] Reg: 1089 Data: 01C5 ( 453) [ADTG3] Reg: 1F0E Data: 0179 ( 377)
[ADTG3] Reg: 1097 Data: 001A ( 26) [ADTG3] Reg: 1F1A Data: 0013 ( 19)
[ADTG3] Reg: 1098 Data: 1E97 ( 7831) [ADTG3] Reg: 1F10 Data: 14E5 ( 5349)
[ADTG3] Reg: 109D Data: 00F0 ( 240) [ADTG3] Reg: 1F16 Data: 00A0 ( 160)
[ADTG3] Reg: 109E Data: 00A8 ( 168) [ADTG3] Reg: 1F14 Data: 00CF ( 207)
[ADTG3] Reg: 109F Data: 01C5 ( 453) [ADTG3] Reg: 1F15 Data: 0179 ( 377)
[ADTG3] Reg: 10A0 Data: 0175 ( 373) [ADTG3] Reg: 1F3F Data: 01A6 ( 422)
[ADTG3] Reg: 10AE Data: 0001 ( 1) [ADTG3] Reg: 1F34 Data: 0001 ( 1)
[ADTG3] Reg: 10AF Data: 0017 ( 23) [ADTG3] Reg: 1F35 Data: 001A ( 26)
[ADTG3] Reg: 10B0 Data: 00D1 ( 209) [ADTG3] Reg: 1F20 Data: 009E ( 158)
[ADTG3] Reg: 10B1 Data: 01CD ( 461) [ADTG3] Reg: 1F21 Data: 0176 ( 374)
[ADTG3] Reg: 10C9 Data: 0001 ( 1) [ADTG3] Reg: 1F71 Data: 0001 ( 1)
[ADTG3] Reg: 10CA Data: 0017 ( 23) [ADTG3] Reg: 1F73 Data: 001A ( 26)
[ADTG3] Reg: 10CB Data: 0068 ( 104) [ADTG3] Reg: 1F72 Data: 004F ( 79)
[ADTG3] Reg: 10CC Data: 00DF ( 223) [ADTG3] Reg: 1F77 Data: 0095 ( 149)
[ADTG3] Reg: 10E5 Data: 0001 ( 1) [ADTG3] Reg: 1F46 Data: 0001 ( 1)
[ADTG3] Reg: 10E6 Data: 006F ( 111) [ADTG3] Reg: 1F44 Data: 004A ( 74)
[ADTG3] Reg: 1101 Data: 0017 ( 23) [ADTG3] Reg: 1E01 Data: 001A ( 26)
[ADTG3] Reg: 1102 Data: 01C5 ( 453) [ADTG3] Reg: 1E03 Data: 0179 ( 377)
[ADTG3] Reg: 113A Data: 0100 ( 256) [ADTG3] Reg: 1E2C Data: 01FF ( 511)
[ADTG3] Reg: 114D Data: 01C4 ( 452) [ADTG3] Reg: 1E76 Data: 0178 ( 376)
[ADTG3] Reg: 114E Data: 01C7 ( 455) [ADTG3] Reg: 1E74 Data: 017A ( 378)
[ADTG3] Reg: 114F Data: 01C2 ( 450) [ADTG3] Reg: 1E75 Data: 017C ( 380)
[ADTG3] Reg: 1155 Data: 0010 ( 16) [ADTG3] Reg: 1E66 Data: 001F ( 31)
[ADTG3] Reg: 1170 Data: 0051 ( 81) [ADTG3] Reg: 1E5F Data: 0061 ( 97)
[ADTG3] Reg: 117A Data: 0000 ( 0) [ADTG3] Reg: 1E53 Data: 0000 ( 0)
[ADTG3] Reg: 117B Data: 0000 ( 0) [ADTG3] Reg: 1E52 Data: 0000 ( 0)
[ADTG3] Reg: 11A0 Data: 0000 ( 0) [ADTG3] Reg: 1EC0 Data: 0000 ( 0)
[ADTG3] Reg: 11A2 Data: 0001 ( 1) [ADTG3] Reg: 1EC3 Data: 0001 ( 1)
[ADTG3] Reg: 11A8 Data: 0001 ( 1) [ADTG3] Reg: 1ECF Data: 0001 ( 1)
[ADTG3] Reg: 11A9 Data: 0000 ( 0) [ADTG3] Reg: 1ECE Data: 0000 ( 0)
[ADTG3] Reg: 11AA Data: 0AC6 ( 2758) [ADTG3] Reg: 1ECC Data: 0C84 ( 3204)
[ADTG3] Reg: 11AB Data: 01C7 ( 455) [ADTG3] Reg: 1ECD Data: 017A ( 378)
[ADTG3] Reg: 11AC Data: 01C1 ( 449) [ADTG3] Reg: 1EC8 Data: 017E ( 382)
[ADTG3] Reg: 1201 Data: 0000 ( 0) [ADTG3] Reg: 1C01 Data: 0000 ( 0)
[ADTG3] Reg: 1202 Data: 0000 ( 0) [ADTG3] Reg: 1C03 Data: 0000 ( 0)
[ADTG3] Reg: 1203 Data: 0000 ( 0) [ADTG3] Reg: 1C02 Data: 0000 ( 0)
[ADTG3] Reg: 1204 Data: 0000 ( 0) [ADTG3] Reg: 1C07 Data: 0000 ( 0)
[ADTG3] Reg: 1205 Data: 0000 ( 0) [ADTG3] Reg: 1C06 Data: 0000 ( 0)
[ADTG3] Reg: 1206 Data: 0000 ( 0) [ADTG3] Reg: 1C04 Data: 0000 ( 0)
[ADTG3] Reg: 1207 Data: 0004 ( 4) [ADTG3] Reg: 1C05 Data: 0007 ( 7)
[ADTG3] Reg: 1208 Data: 0008 ( 8) [ADTG3] Reg: 1C0F Data: 000F ( 15)
[ADTG3] Reg: 1209 Data: 0008 ( 8) [ADTG3] Reg: 1C0E Data: 000F ( 15)
[ADTG3] Reg: 120A Data: 0AC6 ( 2758) [ADTG3] Reg: 1C0C Data: 0C84 ( 3204)
[ADTG3] Reg: 1219 Data: 0149 ( 329) [ADTG3] Reg: 1C11 Data: 018E ( 398)
[ADTG3] Reg: 121A Data: 0159 ( 345) [ADTG3] Reg: 1C13 Data: 0191 ( 401)
[ADTG3] Reg: 1231 Data: 0000 ( 0) [ADTG3] Reg: 1C21 Data: 0000 ( 0)
[ADTG3] Reg: 1232 Data: 0000 ( 0) [ADTG3] Reg: 1C23 Data: 0000 ( 0)
[ADTG3] Reg: 1233 Data: 0176 ( 374) [ADTG3] Reg: 1C22 Data: 01A4 ( 420)
[ADTG3] Reg: 1234 Data: 07D6 ( 2006) [ADTG3] Reg: 1C27 Data: 0564 ( 1380)
[ADTG3] Reg: 1235 Data: 0176 ( 374) [ADTG3] Reg: 1C26 Data: 01A4 ( 420)
[ADTG3] Reg: 1236 Data: 07D6 ( 2006) [ADTG3] Reg: 1C24 Data: 0564 ( 1380)
[ADTG3] Reg: 1237 Data: 0176 ( 374) [ADTG3] Reg: 1C25 Data: 01A4 ( 420)
[ADTG3] Reg: 1238 Data: 07D6 ( 2006) [ADTG3] Reg: 1C2F Data: 0564 ( 1380)
[ADTG3] Reg: 1243 Data: 02CE ( 718) [ADTG3] Reg: 1C7D Data: 0374 ( 884)
[ADTG3] Reg: 1245 Data: 000C ( 12) [ADTG3] Reg: 1C79 Data: 0008 ( 8)
[ADTG3] Reg: 1248 Data: 023E ( 574) [ADTG3] Reg: 1C70 Data: 03D4 ( 980)
[ADTG3] Reg: 1249 Data: 0234 ( 564) [ADTG3] Reg: 1C71 Data: 03D8 ( 984)
[ADTG3] Reg: 124A Data: 010E ( 270) [ADTG3] Reg: 1C73 Data: 01F4 ( 500)
[ADTG3] Reg: 124B Data: 0104 ( 260) [ADTG3] Reg: 1C72 Data: 01F8 ( 504)
[ADTG3] Reg: 124C Data: 010E ( 270) [ADTG3] Reg: 1C77 Data: 01F4 ( 500)
[ADTG3] Reg: 124D Data: 0104 ( 260) [ADTG3] Reg: 1C76 Data: 01F8 ( 504)
[ADTG3] Reg: 124E Data: 010E ( 270) [ADTG3] Reg: 1C74 Data: 01F4 ( 500)
[ADTG3] Reg: 124F Data: 0104 ( 260) [ADTG3] Reg: 1C75 Data: 01F8 ( 504)
[ADTG3] Reg: 1264 Data: 000C ( 12) [ADTG3] Reg: 1C47 Data: 0008 ( 8)
[ADTG3] Reg: 1265 Data: 000F ( 15) [ADTG3] Reg: 1C46 Data: 000A ( 10)
[ADTG3] Reg: 1266 Data: 000A ( 10) [ADTG3] Reg: 1C44 Data: 000C ( 12)
[ADTG3] Reg: 1267 Data: 0009 ( 9) [ADTG3] Reg: 1C45 Data: 000E ( 14)
[ADTG3] Reg: 1279 Data: 91CB (37323) [ADTG3] Reg: 1C51 Data: E172 (57714)
[ADTG3] Reg: 127A Data: 0200 ( 512) [ADTG3] Reg: 1C53 Data: 03FF ( 1023)
[ADTG3] Reg: 0013 Data: 8004 (32772) [ADTG3] Reg: 001D Data: FFF8 (65528)
[ADTG3] Reg: 0014 Data: 0000 ( 0) [ADTG3] Reg: 0018 Data: 0000 ( 0)
[ADTG3] Reg: 0015 Data: 0000 ( 0) [ADTG3] Reg: 0019 Data: 0000 ( 0)
[CMOS] Reg: 0 Data: 000 ( 0) [CMOS] Reg: 0 Data: 000 ( 0)
[CMOS] Reg: 1 Data: 001 ( 1) [CMOS] Reg: 1 Data: 001 ( 1)
[CMOS] Reg: 2 Data: 000 ( 0) [CMOS] Reg: 2 Data: 000 ( 0)
[CMOS] Reg: 3 Data: 810 (2064) [CMOS] Reg: 3 Data: FE0 (4064)
[CMOS] Reg: 4 Data: C05 (3077) [CMOS] Reg: 4 Data: 806 (2054)
[CMOS] Reg: 5 Data: 000 ( 0) [CMOS] Reg: 5 Data: 000 ( 0)
[CMOS] Reg: 6 Data: 081 ( 129) [CMOS] Reg: 6 Data: 0FE ( 254)
[ADTG3] Reg: 1000 Data: 0003 ( 3) [ADTG3] Reg: 1FFF Data: 0002 ( 2)
[ADTG3] Reg: 1200 Data: 0002 ( 2) [ADTG3] Reg: 1C00 Data: 0003 ( 3)
[ADTG3] Reg: 124A Data: 010E ( 270) [ADTG3] Reg: 1C73 Data: 01F4 ( 500)
[ADTG3] Reg: 124B Data: 0104 ( 260) [ADTG3] Reg: 1C72 Data: 01F8 ( 504)
[ADTG3] Reg: 124C Data: 010E ( 270) [ADTG3] Reg: 1C77 Data: 01F4 ( 500)
[ADTG3] Reg: 124D Data: 0104 ( 260) [ADTG3] Reg: 1C76 Data: 01F8 ( 504)
[ADTG3] Reg: 124E Data: 010E ( 270) [ADTG3] Reg: 1C74 Data: 01F4 ( 500)
[ADTG3] Reg: 124F Data: 0104 ( 260) [ADTG3] Reg: 1C75 Data: 01F8 ( 504)
[ADTG3] Reg: 1026 Data: 0006 ( 6) [ADTG3] Reg: 1FC4 Data: 0004 ( 4)
[ADTG3] Reg: 1027 Data: 0019 ( 25) [ADTG3] Reg: 1FC5 Data: 0011 ( 17)
[ADTG3] Reg: 1097 Data: 001A ( 26) [ADTG3] Reg: 1F1A Data: 0013 ( 19)
[ADTG3] Reg: 1098 Data: 1E97 ( 7831) [ADTG3] Reg: 1F10 Data: 14E5 ( 5349)
[ADTG3] Reg: 106C Data: 0000 ( 0) [ADTG3] Reg: 1FB7 Data: 0000 ( 0)
[ADTG3] Reg: 109A Data: 0000 ( 0) [ADTG3] Reg: 1F13 Data: 0000 ( 0)
[ADTG3] Reg: 1000 Data: 0005 ( 5) [ADTG3] Reg: 1FFF Data: 0006 ( 6)
[ADTG3] Reg: 1200 Data: 0001 ( 1) [ADTG3] Reg: 1C00 Data: 0001 ( 1)
[ADTG3] Reg: 1113 Data: 0000 ( 0) [ADTG3] Reg: 1E1D Data: 0000 ( 0)
[ADTG3] Reg: 0009 Data: 2B0B (11019) [ADTG3] Reg: 000E Data: 320D (12813)
[ADTG3] Reg: 000B Data: AB0B (43787) [ADTG3] Reg: 000D Data: CDF2 (52722)
[ADTG3] Reg: 0000 Data: 0149 ( 329) [ADTG3] Reg: 0000 Data: 018E ( 398)
[ADTG3] Reg: 0003 Data: 014A ( 330) [ADTG3] Reg: 0002 Data: 018C ( 396)
[ADTG3] Reg: 0013 Data: 8000 (32768) [ADTG3] Reg: 001D Data: FFFF (65535)
[ADTG3] Reg: 0002 Data: E44C (58444) [ADTG3] Reg: 0003 Data: B877 (47223)
[CMOS] Reg: 0 Data: 090 ( 144) [CMOS] Reg: 0 Data: 0E0 ( 224)
[ADTG3] Reg: 1170 Data: 0011 ( 17) [ADTG3] Reg: 1E5F Data: 001E ( 30)
[ADTG3] Reg: 1000 Data: 0000 ( 0) [ADTG3] Reg: 1FFF Data: 0000 ( 0)
[ADTG3] Reg: 1200 Data: 0000 ( 0) [ADTG3] Reg: 1C00 Data: 0000 ( 0)
[ADTG3] Reg: 1170 Data: 0051 ( 81) [ADTG3] Reg: 1E5F Data: 0061 ( 97)
[ADTG3] Reg: 0013 Data: 8004 (32772) [ADTG3] Reg: 001D Data: FFF8 (65528)
For 500D
// 00 0000 405C56C2 = 100
// 00 0090 405C56D0 = 200
// 00 01B0 405C56DE = 400
// 00 01F8 405C56EC = 800
// 00 0168 405C56FA = 1600
Is what I got in Photo Mode but getting PH err 2
Not sure what to set these at
CMOS_ISO_BITS = 3;
CMOS_FLAG_BITS = 3;
CMOS_EXPECTED_FLAG = 4;
But for these I put
PHOTO_CMOS_ISO_START = 0x405C56C2; // CMOS register 0000 - for photo mode, ISO 100
PHOTO_CMOS_ISO_COUNT = 5; // from ISO 100 to 1600
PHOTO_CMOS_ISO_SIZE = 14; // distance between ISO 100 and ISO 200 addresses, in bytes
Live view while getting values flickered the screen so prob not going to be a live view cam
Break them out into binary to see the flags.
E is the right spacing, expected flag is what that ISOISO[XXX] is. It would be 4 to binary with what you have here.
For LV the regs are different, it can flicker and do funny stuff but if the reg changes you are likely most of the way there. The logging does really wack stuff to 6D while its working, flicker, purple, etc.
You can comment out or remove some of the warnings/holdups, they are different for different cameras.
I use :
CMOS_ISO_BITS = 3;
CMOS_FLAG_BITS = 3;
CMOS_EXPECTED_FLAG = 0;
if ( (iso1 < prev_iso) && !is_500d) /* the list should be ascending */
return 4;
(http://imageshack.us/a/img163/6874/nndk.jpg)
;D
First test 500D :
ISO 100
http://imageshack.us/a/img191/4602/pmom.jpg
Dual ISO 100-800
http://imageshack.us/a/img829/8850/5jay.jpg
shadow is green
Quote from: Greg on August 26, 2013, 06:19:48 PM
I use :
if ( (iso1 < prev_iso) && !is_500d) /* the list should be ascending */
return 4;
lol, I knew i forgot to add something lol
50D had green shadows problem too with the windows version of the converter. Try on other OS.
Now that mk11174 managed on how to find the registers to do Dual ISO for video also for 550D, do it's easier to find also them for 50D, that is doing only dual ISO for photo ? If someone can tell me the current state-of-the art on dual iso for video on 50D, I can inform me from mk11174 on how to proceed also for 50D ! Many thanks anyone ! ;)
In Live View Movie Mode 500D
I dont see the address changing even when I switch ISO using ISO lOCK or ML but the numbers before the addresses change?
ISO 100
/* 00:00:00.239508 */ 00 0000 405C62AC
/* 00:00:00.239565 */ 01 0001 405C62AE
/* 00:00:00.239619 */ 02 0000 405C62B0
/* 00:00:00.239672 */ 03 0818 405C62B2
/* 00:00:00.239727 */ 04 0C0D 405C62B4
/* 00:00:00.239776 */ 05 0400 405C62B6
/* 00:00:00.239827 */ 06 01B1 405C62B8
ISO 200
/* 00:00:00.006544 */ 00 0090 405C62AC
/* 00:00:00.006591 */ 01 0001 405C62AE
/* 00:00:00.006638 */ 02 0000 405C62B0
/* 00:00:00.006683 */ 03 0818 405C62B2
/* 00:00:00.006725 */ 04 0C0D 405C62B4
/* 00:00:00.006767 */ 05 0400 405C62B6
/* 00:00:00.006810 */ 06 01B1 405C62B8
Quote from: mk11174 on August 26, 2013, 07:45:50 PM
I dont see the address changing even when I switch ISO using ISO lOCK or ML but the numbers before the addresses change?
the number in front of the address is the value written into the register :)
Quote from: g3gg0 on August 26, 2013, 08:52:19 PM
the number in front of the address is the value written into the register :)
But since the register is not changing does this mean Live View will not work out? I am trying to figure out the differ between 100 and 200 for Live View? I did not have this issue on the 550D cause the register changed as well?
It acts like it is a digital setting when in PHOTO Mode if you try to go up from 1600 - 3200 it just changes the value written into the register, but the 1600 register does not change. So does that mean the 500D is all digital values from 100 ISO so it can't be used with Dual ISO?
If anyone knows, please tell me so I am not wasting my time, LOL!
Quote from: vroem on July 03, 2013, 02:54:08 AM
They are not
[edit:] Got it to work by adding gdb.o to src/Makefile.src
btw I'm using g3gg0's bitbucket
I'm trying to get this to work on my 60d but I get the same error as vroem
where / how do I add gdb.o into makefile.src?
I tried copying the gdb values from makefile.src.config into makfile.src but I still get the same error
tcc: error: undefined symbol 'gdb_setup'
tcc: error: undefined symbol 'gdb_delete_bkpt'
tcc: error: undefined symbol 'gdb_add_watchpoint'
[E] failed to link modules
I'm using the latest from here: https://bitbucket.org/hudson/magic-lantern (https://bitbucket.org/hudson/magic-lantern)
With the adtg_log module from here: https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/src/00c59f38f28a02170ab1ce8bedea7fbf285ed692/modules/adtg_log?at=unified (https://bitbucket.org/OtherOnePercent/tragic-lantern-6d/src/00c59f38f28a02170ab1ce8bedea7fbf285ed692/modules/adtg_log?at=unified)
50D/500D are a similar generation. If the reg isn't changing and only the value is then it probably won't work for LV. Try setting it manually and see what happens, when I did on 50D it was big fat nothing.
Quote from: 1% on August 28, 2013, 01:24:16 AM
50D/500D are a similar generation. If the reg isn't changing and only the value is then it probably won't work for LV. Try setting it manually and see what happens, when I did on 50D it was big fat nothing.
Yep, same, I am glad I have a 550D and now a 600D, I only wanted to get it to work for others, but it clearly wont, at least it was tried for, just a bust.
I wanted some way to inspect and modify the ADTG registers directly from menu, not via log files (so I could play with it in the train, for example) => I wrote a modified version of adtg_log: it's adtg_gui (https://bitbucket.org/hudson/magic-lantern/commits/3f752403dbdb). Now that's it seems to work pretty smoothly, I thought you may find it useful.
Warning: this is not a toy; it can destroy your sensor.
What's different from adtg_log:
- it appears in Debug menu
- no log files, it's all in the menu
- all intercepted registers are displayed after Canon code touches them
=> [photo mode] first enable logging - simply open the ADTG registers menu - then take a picture, for example, then look in menu again
=> [LiveView] some registers are updated continuously, but there are a lot more that are updated when changing video modes or when going in and out of LiveView (so, to see everything, first open ADTG menu to enable logging, then go to LiveView, then look in menu again)
- for registers that we have some idea about what they do, it displays a short description
=> you can add help lines if you understand some more registers
- you can display diffs (e.g. enable logging, take a pic, select "show modified registers", change ISO, take another pic, then look in the menu)
- you can override any register
=> if you don't have dual ISO yet on your camera, just change CMOS[0] manually, then take pics ;)
=> you can find some funky crop modes (e.g. if you change the line skipping factor)
=> now it's easier than ever to kill your sensor for science
- camera is autodetected (I've added the stubs from this thread and 1% repo for 5D3, 5D2, 60D, 500D, 550D, 50D, 6D, EOSM and tried on the first 3; 7D will not work by design).
- if in doubt, take the battery out. Quickly! (well, that's what I do)
Tip: some registers use NRZI values (they are displayed with a N), others use normal values. If the value doesn't make sense (e.g. something affects brightness, but it seems kinda random, not gradual changes), try flipping the is_nrzi flag from known_regs. You can't do it from the menu yet.
(http://a1ex.magiclantern.fm/bleeding-edge/adtg_gui.png)
@alex
I've been trying to get the adtg_log module working on my 60D but I always get a gdb error
http://sdrv.ms/16VZ5DQ (http://sdrv.ms/16VZ5DQ)
I also tried adtg.gui just now but I get the same error
http://sdrv.ms/15aOS3s (http://sdrv.ms/15aOS3s)
Any ideas what I doing wrong / not doing?
I'd like to get Dual ISO working for 60Ds if I can.
Did you enable CONFIG_GDB?
Like this?
Makefile.user:
ARM_ABI=none-eabi
ARM_PATH=~/arm-toolchain
GCC_VERSION=-4.7.3
CONFIG_MODULES = y
CONFIG_TCC = y
CONFIG_PICOC = n
PYTHON = python2.6
CONFIG_TINYPY = n
CONFIG_GDB = Y
CONFIG_GDBSTUB = Y
I also tried adding:
ifeq ($(CONFIG_GDB),y)
CFLAGS += -DCONFIG_GDB
ML_OBJS-y += \
gdb.o
endif
ifeq ($(CONFIG_GDBSTUB),y)
CFLAGS += -DCONFIG_GDB -DCONFIG_GDBSTUB
endif
to src/makefile.src
It's case-sensitive ;)
Awesome it works :) Thanks a lot.
CMOS[0] for 60d is
Iso 100 0x0
200 0x24
400 0x48
800 0x6c
1600 0x90
3200 0xb4
Liveview Cmos[0] 0x407458fc
Photo Cmos[0] 0x4074464c
Is this what we need for Dual ISO?
Or do I need to find some more?
}
else if (streq(camera_model_short, "60D"))
{
/*
100 - 0
200 - 0x024
400 - 0x048
800 - 0x06c
1600 -0x090
3200 -0x0b4
*/
is_60d = 1;
FRAME_CMOS_ISO_START = 0x407458fc; //
FRAME_CMOS_ISO_COUNT = 7; //
FRAME_CMOS_ISO_SIZE = 32; //
PHOTO_CMOS_ISO_START = 0x4074464c; //
PHOTO_CMOS_ISO_COUNT = 6; //
PHOTO_CMOS_ISO_SIZE = 18; //
CMOS_ISO_BITS = 3;
CMOS_FLAG_BITS = 2;
CMOS_EXPECTED_FLAG = 0;
Would this work?
Quote from: a1ex on August 30, 2013, 11:05:56 AM
=> you can find some funky crop modes (e.g. if you change the line skipping factor)
I'm having an 'ask dumb questions day' but does this mean we 'might' be able to increase frame size by reducing line skipping? A kind of semi-crop mode
I've published the code so you can investigate ;)
Quote from: a1ex on August 30, 2013, 02:51:30 PM
I've published the code so you can investigate ;)
How can I resist the challenge? ;D
Compiling it now. If I don't reappear it's because I've trashed my sensor.
I get a compile error for the ADTG_GUI module:
make[2]: Entering directory `/home/magiclantern/tl50d/modules/adtg_gui'
[ DEPENDS ] adtg_gui.dep
Will NOT load on:
50D (gdb_setup, gdb_add_watchpoint, gdb_delete_bkpt)
Not checked (compile ML for these cameras first):
100D, 1100D, 40D, 500D, 550D, 5D2, 5D3, 5DC, 600D, 60D, 650D.101, 650D.104, 6D.112, 6D.113, 700D, 7D, EOSM.106, EOSM.202
make[2]: *** [adtg_gui.dep] Error 1
make[2]: Leaving directory `/home/magiclantern/tl50d/modules/adtg_gui'
make[1]: *** [adtg_gui] Error 2
make[1]: Leaving directory `/home/magiclantern/tl50d/modules'
make: *** [CONFIG_MODULES_compile] Error 2
magiclantern@magiclantern-VirtualBox:~/tl50d/platform/50D.109$
Already answered today in this thread.
Quote from: a1ex on August 30, 2013, 03:58:23 PM
Already answered today in this thread.
Thanks a1ex, got it. I made exactly the same case mistake :-[
I've got GDB on in the repo so people can play like this. DigicV has problems with CMOS on the fly but ADTG should be good to change to whatever.
Hm, with 5D3 I can change stuff on the fly without problems.
I test the 500D module adtg_gui
Silent Pic DNG :
http://imageshack.us/a/img854/7167/ahfr.jpg
Silent Pic DNG processed cr2hdr :
http://imageshack.us/a/img844/8874/otin.jpg
If I change CMOS on the fly from the old ADTG log It prduces corruption on the screen that gets worse and worse the more you change it. Only on M and 6D maybe?
Does it do the same with this one?
500D (photo mode)
0000 405C56C2 = 100
0090 405C56D0 = 200
01B0 405C56DE = 400
01F8 405C56EC = 800
0168 405C56FA = 1600
0168 405C5708 = 3200
0168 405C5716 = 6400
0168 405C5724 = 12800
Why over 1600 is a constant value 168?
Because the other ISOs are just digital gain.
Quote from: a1ex on August 30, 2013, 05:43:42 PM
Because the other ISOs are just digital gain.
The specification is written that is 100-3200 Analog, Digital 6400 and 12800.
It may be analog, but the dynamic range tests say there's no improvement above 1600, at least on 5D2: http://www.guillermoluijk.com/article/isos5dmkii/index.htm
Or maybe it's some other analog amplifier enabled from elsewhere.
Not sure if this is anything but:
from 50D 2.35:1 aspect ratio (crop mode)
CMOS[4] 0x481 -> 0x489 looks like vertical interlacing or Dual ISO or something
It's vertically stretched in crop mode.
The jpeg is resized so download the DNG if needed
(http://i.imgbox.com/abyhwcg4.jpg)
DNG: http://we.tl/Kmt4CRbFPs
I like it. cr2hdr should process it with minimal changes (you need to rotate the image).
I played a little bit. I received an error and the screen flickering even on the menu.
I think it's an error 500D. I'll leave the camera at night without a battery, it should work ;)
How do I work out what values these need to be?
PHOTO_CMOS_ISO_COUNT = 6; //
PHOTO_CMOS_ISO_SIZE = 18;
CMOS_ISO_BITS = 3;
CMOS_FLAG_BITS = 2;
CMOS_EXPECTED_FLAG = 0;
I can get Dual ISO photos and video from atdg_gui but when I tried the Dual ISO module with the addresses changed I get "ISOless PH err(4)" error
Seems to be working OK.
CMOS 6 Is horizontal alignment of some sort, I can move the image to the left but not the right.
CMOS 7 Moves the image up and down, both work.
6, unused portion is black, 7 white.
The ADTG don't seem to be changing.
ADTG2[8882]
ADTG2[8884]
ADTG2[8886]
These are interesting. Appear to change the sensitivity of the color channels.
They're @ ADTG6 also.
(https://dl.dropboxusercontent.com/u/34113196/ML/ADTG/1.PNG)
(https://dl.dropboxusercontent.com/u/34113196/ML/ADTG/2.PNG)
(https://dl.dropboxusercontent.com/u/34113196/ML/ADTG/3.PNG)
ADTG6[21] is doing some funky stuff. 0x2aab is like some crop mode in LV. 0x2bab-0x2bde is like some gain control.
500D:
ADTG3[0] - change the color temperature warm - cold Maybe, sensitivity of the blue channel.
ADTG1[13] = everything goes red
ADTG1[1061] = changes shutter, seems quite random
we already described some of the registers here:
http://magiclantern.wikia.com/wiki/ADTG
QuoteADTG1[1061] = changes shutter, seems quite random
This is shutter in zoom mode I think. For some reason still doesn't want to go over 110... this is the only camera I have with this behavior.
Quote from: 1% on August 31, 2013, 03:51:59 AM
This is shutter in zoom mode I think. For some reason still doesn't want to go over 110... this is the only camera I have with this behavior.
How is the 5d MkII shutter?
Could it be something to do with the 50D not having native 24/25p and needing FPS override? FPS Override modes (hi jello, low light etc) increase/decrease shutter speed. Maybe there is another timer address?
Quote from: 1% on August 31, 2013, 03:51:59 AM
This is shutter in zoom mode I think. For some reason still doesn't want to go over 110... this is the only camera I have with this behavior.
I think this might be shutter in zoom: ADTG[105f] N 0x5d7
Quote from: Andy600 on August 30, 2013, 08:55:19 PM
from 50D 2.35:1 aspect ratio (crop mode)
CMOS[4] 0x481 -> 0x489 looks like vertical interlacing or Dual ISO or something
This looks like some really extreme HDR (columns 1 and 2 are pretty much normal, columns 3 and 4 look like they were taken at 1/50000)
Quote from: Andy600 on August 31, 2013, 02:15:55 AM
ADTG1[1061] = changes shutter, seems quite random
Try adding this line:
{DST_ADTG, 0x1061, 1, "changes shutter"},
=> that 1 means the register is using NRZI values, so it should no longer be random.
Quote from: a1ex on August 31, 2013, 08:56:59 AM
Try adding this line:
{DST_ADTG, 0x1061, 1, "changes shutter"},
=> that 1 means the register is using NRZI values, so it should no longer be random.
Yes, that did the trick. It's 1x shutter control. Just noticed that it's what 1% has already used.
Quote from: a1ex on August 31, 2013, 08:50:22 AM
This looks like some really extreme HDR (columns 1 and 2 are pretty much normal, columns 3 and 4 look like they were taken at 1/50000)
I also found some less extreme variations between dark and light lines at some settings and some alternated each line, not 2x2 (need to find it again because my battery died). Could this be useful for a psuedo Dual ISO video mode on the 50D? The shot was a frame grab from raw video so it definitely is recordable but vertical rather than horizontal. Not sure if a horizontal reg exists that does the same. I couldn't get cr2hdr to process it because I couldn't re-save as raw after rotation.
BTW, is a similar module for Digic possible? I remember ages ago running a build on the 600D that had some Digic reg viewing thing but I didn't really understand it at the time.
I think digic poke is included.
500D:
ADTG3[0] - 0x149 - color channel
ADTG3[3] - 0x14a - color channel
These values should be the same?
For 60D it should be:
FRAME_CMOS_ISO_START = 0x407458FC; // CMOS register 0000 - for LiveView, ISO 100 (check in movie mode, not photo!)
FRAME_CMOS_ISO_COUNT = 6; // from ISO 100 to 3200
FRAME_CMOS_ISO_SIZE = 30; // distance between ISO 100 and ISO 200 addresses, in bytes
PHOTO_CMOS_ISO_START = 0x4074464C; // CMOS register 0000 - for photo mode, ISO 100
PHOTO_CMOS_ISO_COUNT = 6; // from ISO 100 to 3200
PHOTO_CMOS_ISO_SIZE = 18; // distance between ISO 100 and ISO 200 addresses, in bytes
but I don't know how to set:
CMOS_ISO_BITS = ;
CMOS_FLAG_BITS = ;
CMOS_EXPECTED_FLAG = ;
Quote from: v8rrc on August 30, 2013, 02:18:35 PM
}
else if (streq(camera_model_short, "60D"))
{
/*
100 - 0
200 - 0x024
400 - 0x048
800 - 0x06c
1600 -0x090
3200 -0x0b4
*/
is_60d = 1;
FRAME_CMOS_ISO_START = 0x407458fc; //
FRAME_CMOS_ISO_COUNT = 7; //
FRAME_CMOS_ISO_SIZE = 32; //
PHOTO_CMOS_ISO_START = 0x4074464c; //
PHOTO_CMOS_ISO_COUNT = 6; //
PHOTO_CMOS_ISO_SIZE = 18; //
CMOS_ISO_BITS = 3;
CMOS_FLAG_BITS = 2;
CMOS_EXPECTED_FLAG = 0;
Would this work?
It looks like similar values to 600D.
I've just tested it and I think it works.
Quote from: 1% on September 01, 2013, 04:04:40 PM
It looks like similar values to 600D.
Quote from: Andy600 on August 31, 2013, 07:50:24 PM
I also found some less extreme variations between dark and light lines at some settings and some alternated each line, not 2x2 (need to find it again because my battery died). Could this be useful for a psuedo Dual ISO video mode on the 50D?
That would be some sort of dual shutter, which will be a lot more powerful in really extreme situations (e.g. shooting from a dark cave outside), but will have some more motion artifacts.
Postprocessing will be the same, as long as the pattern is two bright lines / two dark lines (or columns, since rotation is trivial).
CMOS[4] - scroll horizontal in 5x zoom mode
So those are the instant zoom area moves? I was moving it in 1X mode, maybe thats why it acted so odd.
Is PHOTO_CMOS_ISO_COUNT a simple count of the amount of ISO steps?
100
200
400
800
would = PHOTO_CMOS_ISO_COUNT = 4?
Yes if 1600 has the same cmos the value as 800
There's some weird settings in dual_iso.c
6D has a count of 7 to ISO 12800 and 25600 ??? Copy/pasting comments? And why only 7, it should be doing atleast ISO 12800?
Well, that depends on the hardware. You should check what ISOs make the CMOS register change and what no. Sometimes the comments can be a bit off. I don't have a 6D but maybe 1% can comment on it
6D is like this:
6D 03
- 100 - 0
- 200 - 11
- 400 - 0x22
800 - 0x33
1600 - 0x44
3200 - 0x55
6400 - 0x77
128K+ 0x77
0x77 is the highest the ISO goes which is 6400.
Thanks guys.
I've found an interesting one on 50D (I think) but it's difficult to explain properly ???
ADTG3[1000] 0x6 ->0x1205 - you need to zoom then return to unzoomed state for it to take effect. I changed values with 256 (x <<8 )
The image is vertically stretched a bit but also has a realtime ghost image from a different area of sensor that changes with focusing (which is strange because I use manual lenses) plus it goes green when panning over lighter areas - It's recordable too. I can send devs a PM with a link to some video.
These are all ADTG2 (5D3).
809f - Reduces WL, increases stdev, regains highlight detail, works both ways, Canon adjusted, appears to be blue/red channel
80a0 - same as above. possibly in different color channels. See screenshot 1 below (interesting noise pattern).
80a4 - increases stdev both ways
80cc - lower values increase stdev, Canon adjusted 0x100 screenshot 2
80d8 - lower values increase stdev, increases stdev significantly at 0x1,0x2 and 0x3, canon adjusted
8108- lower values increase stdev, banding in highlights
813a - default 0x110, below 0x100 reduces WL to 2070 and reduces stdev.
82f0 - default 0x401, slightly lower values produce black image, 0x3a9 (and other lower values) does something to the green channel in the shadows
fe - default 0x4, lower values reduce stdev, higher values increase stdev
Screenshot 1
(https://s15.postimg.cc/4m0raudln/screenshot1.png)
Screenshot 2
(https://s15.postimg.cc/azpue3q7f/screenshot2.png)
Hi and thank you so much for all that work.
Dual iso video works on my 5d2 but .......only when i'm playing with ADTG_gui
Like this:
1. load atdg_gui module.
2. Play with cmos[0] with movie mode on.
3. found at iso 100 dual iso video working for CMOS[0] 0x301 -> 0x305 ( addr= 0x404B490, value 0x301, nrzi=513(0x201).
Im not a developper, Just a player and i don't know how to implement this in dual_iso.c .
I tried to do something like this but i just got an "ISOless LV err(2)":
is_5d2 = 1;
FRAME_CMOS_ISO_START = 0x404b4590; // CMOS register 0000 - for LiveView, ISO 100 (check in movie mode, not photo!)
FRAME_CMOS_ISO_COUNT = 5; // from ISO 100 to 25600
FRAME_CMOS_ISO_SIZE = 30; // distance between ISO 100 and ISO 200 addresses, in bytes
PHOTO_CMOS_ISO_START = 0x404b3b5c; // CMOS register 0000 - for photo mode, ISO 100
PHOTO_CMOS_ISO_COUNT = 5; // from ISO 100 to 1600
PHOTO_CMOS_ISO_SIZE = 14; // distance between ISO 100 and ISO 200 addresses, in bytes
CMOS_ISO_BITS = 3;
CMOS_FLAG_BITS = 2;
CMOS_EXPECTED_FLAG = 3;
If someone has an idea ? ;)
P.S. Sorry for my bad english
You have to find a way to override that value, preferably without using code hooks. If you find a way to patch some RAM values that are not changed by Canon code, that method is easiest and should be pretty reliable (that's how it's implemented on the other cameras).
Unfortunately, the value at the address used in 5D2 is modified by Canon code (when you switch to another ISO, and maybe also continuously, don't remember). So, one has to find the address (or the logic) where this value comes from, and overwrite that one.
Using code hooks may work, but it's a little more error prone. This library should help a bit:
https://bitbucket.org/hudson/magic-lantern/pull-requests/687/patch-manager-wip/diff
However, I'm not sure it's worth the effort, because of the heavy aliasing in this mode.
I'm not sure to have the required level for all that.
I will try, however.
whatever happens, thank you very much.
QuoteDual iso video works on my 5d2 but .......only when i'm playing with ADTG_gui
@waza57 that sound great !
So you used latest Nightly Build & the atdg_gui module on the 5D2 ?
Did you have to compile the atdg_gui module for the 5D2 ?
Well anyways if there something I can do to help I would be glad do what I can.
As a 5D2 user I would like to see this come to full light. Or the very least I would like to test it out
to see if the video is usable .
if you like to can PM me
QuoteHowever, I'm not sure it's worth the effort, because of the heavy aliasing in this mode
@a1ex , is that reason way to didn't implement dual iso video for the 5d2 .
Quote from: waza57 on March 01, 2016, 12:38:11 PM
Dual iso video works on my 5d2 but .......only when i'm playing with ADTG_gui
Whats funny, dual iso video stops working for me when i'm playing with ADTG_gui on 5D3 :)
@reddeercity
QuoteSo you used latest Nightly Build & the atdg_gui module on the 5D2 ?
No, but with several versions like this one for example:
Magic Lantern v2.3.NEXT.2016Feb29.5D2212
Mercurial changeset: 63b2f145cb3b+ (unified).
I think it' works for the most of Nightly Build's .
QuoteDid you have to compile the atdg_gui module for the 5D2 ?
Yes i did. I don't know if there is a precompiled one.
QuoteWell anyways if there something I can do to help I would be glad do what I can.
As a 5D2 user I would like to see this come to full light. Or the very least I would like to test it out
to see if the video is usable .
if you like to can PM me
OK, thanks . You can also pm me. My first problem is to understand the code of dual-iso.c.
I could post a video later if you're interested but it is wobbly since it is with adtg_gui.mo and I don't know really the values of effectives 2 iso.
actually I trying the alex's idea with memory patches. It's very difficult for me.
@waza57 Sounds great sure , My coding skill are limited but I'm willing to learn what I don't understand ;D
I'll have a look at the code in dual iso.c first to get a understanding what going .
Going to need to do some reading , I think we should start a video dual iso thread for 5D2 and continue there.
So the whole ML community can contribute if there like .
Yea can you post some video samples , I'm mostly interested in the aliasing factor .
I will not have much time this week to work on this , (just finishing up a work project)
next week I'll be able to spend time on this .
.
Just wondering how ADTG detects registers.
Once I enable ADTG module, I think it only shows registers it detects. This detecting is done by seeing the registers being changed by Canon firmware I guess ?
Could it be the case that there are registers available that don't show up in ADTG module, because these registers are never being changed by Canon firmware ?
Quote from: Levas on September 19, 2018, 05:20:28 PM
Once I enable ADTG module, I think it only shows registers it detects. This detecting is done by seeing the registers being changed by Canon firmware I guess ?
That's exactly how it works - all of the ADTG register writes are generally
*) done with the same routine (we call it adtg_write). So, we place a hooking function over that routine, that's going to see its arguments, i.e. a list of ADTG registers to be updated. Each camera may use its own set of registers, so they are not known in advance; they are discovered when Canon firmware changes them.
If you just enable adtg_gui in LiveView, it's going to see only the registers that are refreshed continuously, at every single frame.
Once you exit LiveView and get back, adtg_gui is going to see those registers that were changed by Canon firmware during the initialization phase, too. To update them, until recently you also had to get out of LiveView and back, as the override operates when Canon firmware writes to them. Recent adtg_gui has a trick that allows updating these registers on the fly, although I'm not 100% happy with it - sometimes it just locks up.
*) on some recent models, such as 100D, EOSM2 and most D6/7 models, there's also ADTGDMA, that's not handled by adtg_gui yet.
Quote from: Levas on September 19, 2018, 05:20:28 PM
Could it be the case that there are registers available that don't show up in ADTG module, because these registers are never being changed by Canon firmware ?
Quite possible, although I didn't try to find out. Brute forcing the entire register address space (16-bit) should work. A script would be required to try a couple of values for every register, and check the results against the reference image (before the change). Need to make sure any change made to an ADTG register can be undone, e.g. by getting out of LiveView and back. Worst case, that would require a reboot (so the script would have to be prepared for lockups by saving its state in a config file). Lua is not exactly ready for that (no image analysis functions).
Does firmware have to set all possible registers at startup ?
And is it possible to somehow log this, or is this impossible because ML is loaded at startup by the canon firmware so maybe registers are already set before ML is even loaded ?
No, some devices are initialized on demand. Some cameras do some sort of bad pixel calibration at startup, but from what I could tell, that doesn't trigger any image capture; maybe it's just loading saved correction data into the image processor, or something like that. But image capture is powered on when entering LiveView or when taking a photo, and powered off when finished. Complete configuration happens after powering on, i.e. it's visible in adtg_gui.
However, some registers are configured with different values at different stages; for example, before capturing a photo, most cameras also capture a partial dark frame, apparently for figuring out the vertical stripe pattern. The 500D and 1100D don't do this, but most other cameras do. The calibration frame has different vertical size, so FPS timer B is set to different values. Currently, adtg_gui doesn't handle this very well, so it's hard to override values just at one stage of the image capture sequence; by default, it overrides a register in all places where it's modified by Canon code.
Look at this screenshot:
Quote from: a1ex on July 14, 2014, 11:32:29 PM
(http://a1ex.magiclantern.fm/bleeding-edge/gradient/6D/fps-registers.jpg)
FPS register B was set a couple of times during the image capture process, to different values. By default, adtg_gui shows just the last value for each register. If you change the "unique key" option (caveat: you need to do that before enabling the main ADTG menu entry!), you can see, to some extent, the different values
as long as they were changed from different parts of Canon code. You can't just see the entire sequence in the menu yet; that's a bit more difficult to solve, especially if you will want to override things.
You can log the complete communication between the ARM CPU and its peripherals - remember these thousands of registers (https://bitbucket.org/hudson/magic-lantern/pull-requests/900/mmio-tracing-backend-insanely-powerful)?
You should find every single register read/write in those huge logs (https://www.magiclantern.fm/forum/index.php?topic=2388.msg197313#msg197313).
You can see everything the firmware does, before ML is loaded, in QEMU (-d io). It's not touching the image capture stuff.
Quote from: a1ex on September 19, 2018, 07:55:34 PM
before capturing a photo, most cameras also capture a partial dark frame, apparently for figuring out the vertical stripe pattern.
Interesting. How did you find out? Is this done before every single photo?
Yes, before every single photo; look up "scsDummyReadoutDone".
700D:
cat "700D.115/cr2 capture 1_50.LOG" | grep 'SW2\|scs\|Readout\|C0F06' |grep -v 0x00000000
2.248.468 EventMgr:ff227544:8d:03: emDeliverMulticastEvent : SW2ON
2.248.618 ShootCaptu:ff14beec:93:03: scsReleaseOn
2.248.656 ShootCaptu:ff148058:93:03: scsReleaseStart
2.273.205 ShootCaptu:ff2c2d14:MMIO : [0xC0F06800] <- 0x00030010
2.273.207 ShootCaptu:ff2c2d14:MMIO : [0xC0F06804] <- 0x0DCC0538
2.273.208 ShootCaptu:ff2c2d14:MMIO : [0xC0F06808] <- 0xFFFFFFFF
2.273.210 ShootCaptu:ff2c2d14:MMIO : [0xC0F0680C] <- 0xFFFFFFFF
2.273.211 ShootCaptu:ff2c2d14:MMIO : [0xC0F06810] <- 0xFFFFFFFF
2.273.213 ShootCaptu:ff2c2d14:MMIO : [0xC0F06814] <- 0xFFFFFFFF
2.273.216 ShootCaptu:ff2c2d14:MMIO : [0xC0F06824] <- 0x0000056A
2.273.217 ShootCaptu:ff2c2d14:MMIO : [0xC0F06828] <- 0x0000056A
2.273.219 ShootCaptu:ff2c2d14:MMIO : [0xC0F0682C] <- 0x0000056A
2.273.220 ShootCaptu:ff2c2d14:MMIO : [0xC0F06830] <- 0x0000056A
2.273.226 ShootCaptu:ff2c2d14:MMIO : [0xC0F06008] <- 0x056B056B
2.273.228 ShootCaptu:ff2c2d14:MMIO : [0xC0F0600C] <- 0x056B056B
2.273.229 ShootCaptu:ff2c2d14:MMIO : [0xC0F06010] <- 0x0000056B
2.273.290 ShootCaptu:ff2c2d14:MMIO : [0xC0F060D0] <- 0x00000001
2.273.301 ShootCaptu:ff2c2d14:MMIO : [0xC0F06018] <- 0x00000020
2.273.302 ShootCaptu:ff2c2d14:MMIO : [0xC0F06020] <- 0x00000002
2.276.526 ShootCaptu:ff1488ac:93:03: scsReleaseData
2.282.642 ShootCaptu:ff148e94:93:03: NormalCapture(scsReleaseData) <-- calibration frame starts
2.283.855 ShootCaptu:ff2c2d14:MMIO : [0xC0F06800] <- 0x00030010
2.283.857 ShootCaptu:ff2c2d14:MMIO : [0xC0F06804] <- 0x0DCC0538 <-- capture resolution: (0x538-0x10)*4 x (0xdcc-3) = 5280x3529
2.283.858 ShootCaptu:ff2c2d14:MMIO : [0xC0F06808] <- 0xFFFFFFFF
2.283.860 ShootCaptu:ff2c2d14:MMIO : [0xC0F0680C] <- 0xFFFFFFFF
2.283.861 ShootCaptu:ff2c2d14:MMIO : [0xC0F06810] <- 0xFFFFFFFF
2.283.863 ShootCaptu:ff2c2d14:MMIO : [0xC0F06814] <- 0xFFFFFFFF
2.283.866 ShootCaptu:ff2c2d14:MMIO : [0xC0F06824] <- 0x0000056A
2.283.867 ShootCaptu:ff2c2d14:MMIO : [0xC0F06828] <- 0x0000056A
2.283.869 ShootCaptu:ff2c2d14:MMIO : [0xC0F0682C] <- 0x0000056A
2.283.870 ShootCaptu:ff2c2d14:MMIO : [0xC0F06830] <- 0x0000056A
2.283.876 ShootCaptu:ff2c2d14:MMIO : [0xC0F06008] <- 0x056B056B
2.283.878 ShootCaptu:ff2c2d14:MMIO : [0xC0F0600C] <- 0x056B056B
2.283.879 ShootCaptu:ff2c2d14:MMIO : [0xC0F06010] <- 0x0000056B
2.283.940 ShootCaptu:ff2c2d14:MMIO : [0xC0F060D0] <- 0x00000001
2.283.951 ShootCaptu:ff2c2d14:MMIO : [0xC0F06018] <- 0x00000020
2.283.953 ShootCaptu:ff2c2d14:MMIO : [0xC0F06020] <- 0x00000002
2.284.192 ShootCaptu:ff2c2d14:MMIO : [0xC0F06014] <- 0x0000020F <--- capturing just ~ 528 lines?!
2.284.193 ShootCaptu:ff2c2d14:MMIO : [0xC0F06000] <- 0x00000001
2.284.949 ShootCaptu:ff2c2d14:MMIO : [0xC0F06014] <- 0x0000138B <--- ???
2.284.951 ShootCaptu:ff2c2d14:MMIO : [0xC0F06000] <- 0x00000001
2.290.801 ShootCaptu:ff14bcec:93:03: scsProperty ID=0x80030012(0x16)
2.307.318 **INT-6Ah*:ff148168:93:03: Dummy ReadoutDone(1085)
2.307.403 ShootCaptu:ff149798:93:03: scsPreCapReadyReadoutDone <-- calibration frame captured, took 22.9 ms = 528e3/(32e6/0x56c)
2.307.870 ShootCaptu:ff2c2d14:MMIO : [0xC0F06014] <- 0x000002C9 <--- ???
2.307.872 ShootCaptu:ff2c2d14:MMIO : [0xC0F06000] <- 0x00000001
2.314.267 ShootCaptu:ff149d44:93:03: scsCapReady
2.314.289 ShootCaptu:ff149d9c:93:03: scsCapReady
2.331.825 ShootCaptu:ff2c2d14:MMIO : [0xC0F06004] <- 0x00000001
2.331.827 ShootCaptu:ff2c2d14:MMIO : [0xC0F06000] <- 0x00000001
2.336.084 ShootCaptu:ff2c2d14:MMIO : [0xC0F06014] <- 0x00000DCB <-- actual image capture starts here
2.336.085 ShootCaptu:ff2c2d14:MMIO : [0xC0F06000] <- 0x00000001
2.345.476 ShootCaptu:ff14a0bc:93:03: scsCapEnd
2.345.614 ShootCaptu:ff2c2d14:MMIO : [0xC0F06000] <- 0x00000001
2.365.449 EventMgr:ff0d12b4:93:03: scsAFPINTParamCBR(JobID=1085)
2.365.961 EventMgr:ff0d1220:93:03: scsIMAGEParamCBR(JobID=1085)
2.366.998 EventMgr:ff0d17c8:93:03: scsAfterReleaseDataCBR(1085)
2.432.586 EventMgr:ff2276f0:8d:03: emDeliverMulticastEvent : SW2OFF
2.432.979 ShootCaptu:ff14ad74:93:03: scsReleaseEnd
2.433.014 ShootCaptu:ff14bf2c:93:03: scsReleaseOff
2.442.875 ShootCaptu:ff14a294:93:03: scsSAFAreaStart
2.478.005 CtrlSrv:ff39dc40:83:03: IDLEHandler PRESS_SW2_BUTTON <-- what's this doing here?! SW2 was pressed a long time ago
2.498.579 **INT-6Ah*:ff14a038:93:03: ReadoutDone(1085)
2.498.792 ShootCaptu:ff14a328:93:03: scsFinalReadoutDone
2.499.022 ShootCaptu:ff14a34c:93:03: End Mem1 Crosstalk scsFinalReadoutDone <-- Crosstalk? AF pixels related?
2.503.772 ShootCaptu:ff14a810:93:03: scsFinalReadoutDone (2121)
2.505.425 ShootCaptu:ff14bcec:93:03: scsProperty ID=0x80030012(0x14)
2.554.713 CtrlSrv:ff39dc40:83:03: IDLEHandler UNPRESS_SW2_BUTTON
2.555.880 Fstorage:ff1d07e8:9e:03: fssSW2On
2.555.912 Fstorage:ff1d0918:9e:03: fssSW2Off (ID = 1085)
2.906.650 ShootCaptu:ff14bcec:93:03: scsProperty ID=0x80030012(0x10)
2.906.702 ShootCaptu:ff14bc8c:93:03: scsDevDone[1]
3.604.399 ShootCaptu:ff14bcec:93:03: scsProperty ID=0x80030012(0x0)
3.604.451 ShootCaptu:ff14bc8c:93:03: scsDevDone[0]
Postprocessing happens in other tasks: ShootPreDevelop, ShootSsDevelop, YMMV on other models.
Interesting stuff, didn't know that that much was going on, with every single photo capture.
Quote from: a1ex on September 19, 2018, 07:55:34 PM
You can see everything the firmware does, before ML is loaded, in QEMU (-d io). It's not touching the image capture stuff.
But this, this probably says it all for me, all intersting stuff, movie/photo modes, are seen by adtg module.
Trying to find the "PowerSaveTiming" Reg's for d4 5D2 & 50D , I did find something close in the 5d2 rom disassembly
ffccf734: STRING: 'EnablePowerSave'
ffccf744: STRING: 'DisablePowerSave'
below is what was in the dm-0003_Photo_Liveview_reviewing_cr2.log
0BE05> Startup:ff871ad4:00:01: [PM] DisablePowerSave (Counter = 2)
0BE43> Startup:ff871b44:00:01: [PM] EnablePowerSave (Counter = 1)
0BE82> **INT-50h*:ff871ad4:00:01: [PM] DisablePowerSave (Counter = 2)
0BEBA> **INT-50h*:ff871b44:00:01: [PM] EnablePowerSave (Counter = 1)
0C03C> **INT-50h*:ff871ad4:00:01: [PM] DisablePowerSave (Counter = 2)
0C094> **INT-50h*:ff871b44:00:01: [PM] EnablePowerSave (Counter = 1)
So is "EnablePowerSave" & "DisablePowerSave" the same as "PowerSaveTiming On" & "PowerSaveTiming Off" on d5 5d3 ?
https://www.magiclantern.fm/forum/index.php?topic=25839 (https://www.magiclantern.fm/forum/index.php?topic=25839)
I'm having some problems trying to compile the firmware for Canon 500D. Maybe there's something wrong with the code. I don't know how to solve it.