Canon 1200D

Started by akkotyni, July 12, 2014, 02:48:26 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Greg

platform/1200D.101/internals.h

/** Properties are persistent (saved in NVRAM) => a mistake can cause permanent damage. Undefine this for new ports. */
#undef CONFIG_PROP_REQUEST_CHANGE


I do not know at what stage is the port 1200D.
If you are going to define it, you must know what you're doing.

a1ex

The camera appears very similar to 60D, so it's probably safe to enable.

Best way to try:
- make sure you have a backup of your ROM (just in case)
- enable it
- exercise all the new functions (in particular, grep the source code for prop_request_change to see which ones use this feature)

That way, if anything goes wrong (unlikely), there won't be too many cameras bricked at once.

Torkie

I managed to compile ML for the 1200D properly, and now excluded the part of the selftest module that exercised the bv_toggle function.

I can execute the stubs test, it produces a log which I have added below.

In the end it says: Test complete. 4401 passed, 1 failed.

I also ran the quick test, that seemed to run without problems.



[Pass] is_play_mode() => 0x1
[Pass] f = FIO_CreateFile("test.dat") => 0x3
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
[Pass] FIO_WriteFile(f, (void*)0xFF000000, 0x10000) => 0x10000
       FIO_CloseFile(f)
[Pass] FIO_GetFileSize("test.dat", &size) => 0x0
[Pass] size => 0x20000
[Pass] p = (void*)_alloc_dma_memory(0x20000) => 0x40997048
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x3
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
       FIO_CloseFile(f)
       _free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x423680d4
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x3
[Pass] FIO_SeekSkipFile(f, 0, SEEK_END) => 0x82000000
[Pass] FIO_WriteFile(f, buf, 0x10) => 0x10
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_END) => 0x81fffff0
[Pass] FIO_WriteFile(f, buf, 0x30) => 0x30
[Pass] FIO_SeekSkipFile(f, 0x20, SEEK_SET) => 0x20
[Pass] FIO_SeekSkipFile(f, 0x30, SEEK_CUR) => 0x50
[Pass] FIO_SeekSkipFile(f, -0x20, SEEK_CUR) => 0x30
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000020
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x2268
       msleep(900)
[Pass] timer_func => 0x0
       msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x9
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x226a
       msleep(400)
       CancelTimer(timer)
[Pass] timer_func => 0x0
       msleep(1500)
[Pass] timer_func => 0x0
[Pass] SetHPTimerAfterNow(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetHPTimerAfterNow(100000, timer_cbr, overrun_cbr, 0) => 0x258
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0x13d
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0xf8
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0xffffff8b
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x25a
       msleep(80)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x3
       msleep(80)
[Pass] timer_func => 0x3
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 300000) => 0x53
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0xe
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0xffffff22
       t0 = *(uint32_t*)0xC0242014 => 0x2e1d5
       msleep(250)
       t1 = *(uint32_t*)0xC0242014 => 0x6b235
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x1
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x35
       Date/time: 2017/02/26 19:49:53
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x37
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
       m0 = MALLOC_FREE_MEMORY => 0x3dee8
[Pass] p = (void*)_malloc(50*1024) => 0xc6f28
[Pass] CACHEABLE(p) => 0xc6f28
       m1 = MALLOC_FREE_MEMORY => 0x316d8
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x3dee8
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0x141bcc
[Pass] p = (void*)_AllocateMemory(256*1024) => 0xba7fb4
[Pass] CACHEABLE(p) => 0xba7fb4
       m1 = GetFreeMemForAllocateMemory() => 0x101bbc
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0x141bcc
[Pass] ABS((m0-m1) - 256*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x3dee8
       m02 = GetFreeMemForAllocateMemory() => 0x141bcc
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x40ba7ff4
[Pass] UNCACHEABLE(p) => 0x40ba7ff4
[Pass] CACHEABLE(p) => 0xba7ff4
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x40ba7ff4
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x423680b4
[Pass] UNCACHEABLE(p) => 0x423680b4
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x3dee8
       m12 = GetFreeMemForAllocateMemory() => 0x141bcc
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0xc5888
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc58b0
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x423680b0
[Pass] UNCACHEABLE(p) => 0x423680b0
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xc5888
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1dd4000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc58b0
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1dd4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0xc5888
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x3
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc58b0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x423680b0
[Pass] UNCACHEABLE(p) => 0x423680b0
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc5910
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2898000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc5948
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xc5888
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x3
[Pass] suite->size => 0x4700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0xc58b0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x1c94000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x423680b0
[Pass] UNCACHEABLE(p) => 0x423680b0
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc5910
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2898000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x413f8070
[Pass] UNCACHEABLE(p) => 0x413f8070
       chunk = GetNextMemoryChunk(suite, chunk) => 0xc5948
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4a000070
[Pass] UNCACHEABLE(p) => 0x4a000070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4700000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x16bcbc
[Pass] msg => 'hi there'
[Pass] snprintf(a, sizeof(a), "foo") => 0x3
[Pass] snprintf(b, sizeof(b), "foo") => 0x3
[Pass] strcmp(a, b) => 0x0
[Pass] snprintf(a, sizeof(a), "bar") => 0x3
[Pass] snprintf(b, sizeof(b), "baz") => 0x3
[Pass] strcmp(a, b) => 0xfffffff8
[Pass] snprintf(a, sizeof(a), "Display") => 0x7
[Pass] snprintf(b, sizeof(b), "Defishing") => 0x9
[Pass] strcmp(a, b) => 0x4
[Pass] snprintf(buf, 3, "%d", 1234) => 0x2
[Pass] buf => '12'
[Pass] memcpy(foo, bar, 6) => 0x16bc80
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x16bc60
[Pass] bar => '*****hjkl;'
       bzero32(bar + 5, 5)
[Pass] bar => '****'
       EngDrvOut(LCD_Palette[0], 0x1234)
[Pass] shamem_read(LCD_Palette[0]) => 0x1234
       call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
       call("TurnOffDisplay")
[Pass] DISPLAY_IS_ON => 0x0
       call("TurnOnDisplay")
[Pass] DISPLAY_IS_ON => 0x1
       task_create("test", 0x1c, 0x1000, test_task, 0) => 0x67c00be
[Pass] test_task_created => 0x1
[Pass] get_task_name_from_id(get_current_task()) => 'run_test'
[Pass] task_max => 0x68
[Pass] task_max => 0x68
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0x67e0096
[Pass] msg_queue_post(mq, 0x1234567) => 0x0
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x0
[Pass] m => 0x1234567
[Pass] msg_queue_receive(mq, (struct event **) &m, 500) => 0x9
[Pass] sem = sem ? sem : create_named_semaphore("test", 1) => 0x6800304
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] take_semaphore(sem, 500) => 0x9
[Pass] give_semaphore(sem) => 0x0
[Pass] take_semaphore(sem, 500) => 0x0
[Pass] give_semaphore(sem) => 0x0
[Pass] rlock = rlock ? rlock : CreateRecursiveLock(0) => 0x682006a
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] AcquireRecursiveLock(rlock, 500) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0x0
[Pass] ReleaseRecursiveLock(rlock) => 0xf
       SetGUIRequestMode(1); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x1
       SetGUIRequestMode(2); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x2
       SetGUIRequestMode(0); msleep(1000);
[Pass] CURRENT_GUI_MODE => 0x0
[Pass] display_idle() => 0x1
       GUI_Control(BGMT_PLAY, 0, 0, 0); msleep(1000);
[Pass] PLAY_MODE => 0x1
[Pass] MENU_MODE => 0x0
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(1000);
[Pass] MENU_MODE => 0x1
[Pass] PLAY_MODE => 0x0
[Pass] dialog->type => 'DIALOG'
       GUI_Control(BGMT_MENU, 0, 0, 0); msleep(500);
[Pass] MENU_MODE => 0x0
[Pass] PLAY_MODE => 0x0
       SW1(1,100)
[FAIL] HALFSHUTTER_PRESSED => 0x0
       SW1(0,100)
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x1
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x1
[Pass] is_play_mode() => 0x1
[Pass] is_pure_play_photo_mode() => 0x0
[Pass] is_pure_play_movie_mode() => 0x0

canonlover

Hola!  estoy haciendo pruebas con el video RAW de la canon 1200D y tengo resultados.

https://youtu.be/MwSieujggcY

es algo rapido espero tener tiempo en estos dias para hacer algo mas serio con davinci resolve y mejor composicion.

______________________________________________________________
ENGLISH


Hello! I am doing tests with the RAW video of the canon 1200D and I have results.

https://youtu.be/MwSieujggcY

Is something quick I hope to have time these days to do something more serious with davinci solves and better composition.


a1ex

Quote from: Torkie on February 26, 2017, 08:44:55 PM
In the end it says: Test complete. 4401 passed, 1 failed.

Thanks; the failed one requires property changes enabled. That's pretty good.

Quote from: canonlover on February 26, 2017, 09:20:09 PM
Hello! I am doing tests with the RAW video of the canon 1200D and I have results.

I was expecting some actual test results...

Quote from: dmilligan on December 11, 2013, 04:16:32 PM
Test, as in really test. As if you were QC working for a software company. Don't just use ML in normal situations and submit problems when things go wrong (and don't just do another ML RAW vs. H264 test, there are more than plenty of those out there). Try to break a feature. Think of as many possible scenarios as you can. Throw everything you can think of at a feature to break it. Try every value of every setting. Try it in extremely unusual scenes or lighting. Write down your results like a scientist doing an expirement. Then share your results, even if nothing went wrong. It's also helpful for devs to know when something actually works. Test for the sake of testing, with specific intention, not for the sake of making your 'budget short film'.

PankajDubey

I am using it on EOS 1200D with 1.01 firmware by downloading the files from the link below and the video.
I had to use the EOScard.exe file to get it working.

https://youtu.be/R9-hteAFBPg

Pankaj

a1ex


jarbi

Hi,

I could also install ML on my 1200D, it got stuck at the "EnableBootdisk" message first. So this was in the installer part I guess.
But after using the EOScard.exe utility on mySD card it works, thanks to all developers !

Cheers,
Janos

RobMac

Hi I was just wondering where I can download the most recent build to use? I found a post that said it was the latest build but it was dated july 30 2016 so I just wanted to make sure it was the most recent one!
Thanks
Rob

PankajDubey

Quote from: a1ex on March 17, 2017, 11:10:19 AM
That means, the installer didn't work?

Yes, for me it worked only after I used the additional step.
(Or, no, it didn't work until I used the additional step of making the card bootable.)

a1ex

I'm talking about this installer, not the one from youtube...

jarbi

Hi,

I am looking forward to have the advanced intervalometer module available for the 1200D. Hopefully it doesn't take much effort to make it work on this camera.
Does anyone know if someone is working on it ?

a1ex

This one (and most other interesting stuff) will work as soon as somebody enables changing Canon properties (discussed on this page).

Reminder: I'm still waiting for feedback on this build. For example, nobody reported whether the installer works or not (the previous report appears to be for an older version). Also, a menu walkthrough would be nice; I'm pretty sure that build contains more than the Overlay menu and API tests, already covered.

Please remember this is a blind port (none of the active developers has a 1200D), so we really don't know how it looks or behaves if you don't provide feedback.

jarbi

Hi A1ex,

I have tested your installer yesterday evening, it stops at the "EnableBootdisk" message, than the screen goes blank. Nothing happens after unless I switch the camera off/on, then ML starts. In my case I have enabled boot with EOScard.exe already earlier,

cheers,
Janos

a1ex

Was it a fresh install (no ML on the camera before), or you already had it installed with the older installer (the one with smiley face)?

If you format the card from the camera, is ML restored successfully?

(just trying to narrow down the step where it got stuck)

jarbi

Hi a1ex,

I had already ML installed with the older installer, and I could do a format succesfully with ML preserved ( after executing your installer ).

a1ex

Can you record a video of the installation process? The exact moment of crash should give additional clues.

jarbi

Hi a1ex,

I have recorded the installation, you can watch it here and see where it stops:  https://youtu.be/fLUH9sNVsFQ
The camera is not freezing when I get the blank screen, just power saving. When I press the shutter half way the menu comes back and ML stays active ( boot flag was set already earlier as I explained )

a1ex

This is the old installer; please test the one I've linked a couple of times...

jarbi

Hi a1ex,

I'm sorry for the confusion, now I made sure I'm using your installer. Before installation I have disabled the boot flag on my SD card, and the installation was flawless this time !! But Murphy was also "present": the video I have recorded is somehow corrupt. Nevertheless I can post some screenshots from it: https://drive.google.com/open?id=0B5rc5Ssg9hE-c0JucnZCMlZFUUk

So your new installer works fine as I see, thanks again,

Cheers,


a1ex

Looks good, thanks.

A few days ago, I've attempted to test the installer myself in QEMU (wanted to find out why it crashed, based on previous reports). The result is this - you can now run the unmodified autoexec.bin under QEMU and navigate the menus (both Canon and ML), on 1200D and a bunch of other models.

Previously, this was only possible on 500D (other models required modified autoexec.bin or did not start the GUI at all).

Fredestroyer007

a1ex, I confirm that the installer is working! I just install Magic Lantern on my camera. Will start extensive testing as per the preceding instruction ;)

Fredestroyer007

First problem! I can't acess the Magic Lantern menu in video mode (work just fine in Program, Manual, Aperture Priority and Shutter Priority!)! Is it normal?

Second problem! Each time I change the shutter speed using the dial, the menu seems to jump to the normal Canon menu than goes back to the magic lantern menu. Is it normal?

1. Overlay:
    - Zebras : NOT OK!
    - Focus Peak : NOT OK!
    - Magic Zoom : OK!
    - Cropmarks : OK!
    - Ghost Image : OK!
    - Spotmeter : OK!
    - False Color: NOT OK!
    - Histogram : OK!
    - Waveform : OK!
    - Vectorscope : OK!

2. Movie :
    - Bit Rate (CBR) : OK! (Tested up to 2x at 6400 ISO, don't know if it will go higher!)
    - REC key : OK!
    - Gradual Exposure : OK!
    - FPS override : OK!
    - HDR video : OK!
    - Vignetting : OK!
    - Image Fine-tuning : Not sure what it is suppose to do...
    - Creative Effects : OK!
    - Movie Tweaks : OK!

3. Shoot :
    - Intervalometer : OK!
    - Motion Detect : OK!
    - Shoot Preferences : OK!

4. Focus :
    - Trap Focus : OK!
    - DOF Settings : What is that???

5. Display :
    - LV DIGIC peaking : NOT OK! (The edge image option makes the menu unreadable, Slightly Sharper works fine!)
    - LV saturation : OK!
    - LV display gain : OK!
    - Clear overlays : OK!
    - Advanced settings : OK! (I didn't test HDMI out...)

6. Prefs :
    - Everything seems to be fine!

7. Modules :
    - I didn't test any module...

8. Debug :
    - How to test the debug module?

9. Help : NOT OK! (The help files aren't on the SD card...)

All test were done at 100 ISO and 6400 ISO using the Technicolor Cinestyle with a manual m42 lens (adapted to Canon Ef).

If there is any question, I will gladly answer them :)

a1ex

ML menu in video mode: select Debug -> Show GUI events and write down the values that appear when pressing the delete button (or record a video).

Focus peaking and false colors: what exactly is wrong with them?

Image Fine-tuning:
- ML digital ISO should... change brightness
- Black level: should adjust the blacks (deep shadows) in LiveView
- Absolute zero sharpness: should override picture style sharpening (should give lower sharpness than Canon's minimum level). If you don't want to pixel-peep, set picture style sharpness to maximum, then enable this option (so the difference will be obvious).
- Edge emphasis: you may need some pixel peeping for this one; not sure if it's of any use in practice.

- DOF settings: here and here
- LV DIGIC peaking: sounds like OK to me, as the effect applies to the entire image (including menus)

Fredestroyer007

First, for the zebras, the focus peaking and the false color... My bad, THEY WORK! The only problem is that they are not working while using the Magic Zoom! Is it normal?

Secondly, ML menu in video mode: select Debug ->
EV13: p=        4c  *o=             0/             0/            0  a=        0
EV14: p=        61  *o=  1010006/65006098/15500301  a=        e
EV15: P=        61  *o=  3010006/65006098/15500101  a=        e

Third, for some function, the font size is too small (probably the effect of the low res screen on the 1200d). For exemple, the camera temperature and the bit rate viewer are unreadeble (they are like tinny dots.).

Fourth, the camera is jumping between the Magic Lantern menu and the original Canon menu (in live view) while changing setting like the shutter speed using the dial.

Finally, I am gonna make heavy testing to see if some function are not ''compatible'' with each other like the focus peaking and the magic zoom

TEST VERSION #2
1. Overlay:
    - Zebras : OK! (not working with Magic Zoom)
    - Focus Peak : OK! (not working with Magic Zoom)
    - Magic Zoom : OK!
    - Cropmarks : OK!
    - Ghost Image : OK!
    - Spotmeter : OK!
    - False Color: OK! (not working with Magic Zoom)
    - Histogram : OK!
    - Waveform : OK!
    - Vectorscope : OK!

2. Movie :
    - Bit Rate (CBR) : OK! (Tested up to 2x at 6400 ISO, don't know if it will go higher!)
    - REC key : OK!
    - Gradual Exposure : OK!
    - FPS override : OK!
    - HDR video : OK!
    - Vignetting : OK!
    - Image Fine-tuning : OK!
    - Creative Effects : OK!
    - Movie Tweaks : OK!

3. Shoot :
    - Intervalometer : OK!
    - Motion Detect : OK!
    - Shoot Preferences : OK!

4. Focus :
    - Trap Focus : OK!
    - DOF Settings : OK!

5. Display :
    - LV DIGIC peaking : OK!
    - LV saturation : OK!
    - LV display gain : OK!
    - Clear overlays : OK!
    - Advanced settings : OK! (I didn't test HDMI out...)

6. Prefs :
    - Everything seems to be fine!

7. Modules :
    - I didn't test any module...

8. Debug :
    - OK!

9. Help :
    - NOT OK! (The help files aren't on the SD card...)

All test were done at 100 ISO and 6400 ISO using the Technicolor Cinestyle with a manual m42 lens (adapted to Canon Ef) AND a second round of testing was done with an Canon Ef 50 mm STM and everything worked just fine.