Canon 6D

Started by Maqs, May 01, 2015, 09:56:15 AM

Previous topic - Next topic

0 Members and 3 Guests are viewing this topic.

Nathanael

Yes i've this factory menu....

But the Simply Electronics is closed now and warranty is over :(

ArcziPL

You have a normal official firmware in your camera, "only" the Factory Mode has to be disabled. Then the reported FW version will be back to normal.

I'm not sure if anyone here could help you remotely. This would need a possibility of executing a custom code on your camera (I guess setting the boot flag, booting and starting Canon firmware should be possible in this mode but I'm only guessing!) and calling some functions from Canon FW (FA_SetProperty, FA_SaveProperty, MonWrite, MonCall...). The latter would need that the functions' stubs are in this mode same as in normal mode. If they are -- I have no idea. It would also need understanding which property to modify and this area is not explored yet in the context of Factory Mode by ML developers! AFAIR no one played with it yet. I could support here providing logs from another camera models to analyze how the Factory Mode is enabled and disabled over USB interface. Probably it's similar for 6D.

You can try finding any third-party DSLR service and ask if they can do it for you and how much would they charge. I'm sure there are several available in France and this is a 5 minutes only job if one only has a tool. Just call a few and ask directly for the possibility and a price.
M50.110 [main cam] | G7X III [pocket cam] | 70D.112 [gathers dust] | M.202 [gathers dust] | waiting for M5II

Nathanael

OK, thanks a lot for your informations !

i'll try to find a Canon Center near my city to disable the factory mode :)

Perhaps in a store "Canon Pro Partenaire" (Canon Pro Partner) in my city

blubbblubb

Quote from: dfort on May 03, 2018, 07:24:53 PM
...
Looking for testers to try out the "Nightly" build and see if it works the same as the 6D.116 from the official downloads page. Then run the selftest module and lua module API stubs tests and report back.

Note that this is an early test build so no ML-SETUP.FIR yet. You'll have to make sure ML is installed and running before doing the firmware update so the bootflags on both camera and card are set. I put a "6D Canon Firmware for Testers" package on my downloads page so you don't have to go searching for the Canon firmware updaters.

I finally had some time and tried the test version, i picked the "magiclantern-Nightly.2018May03.6D118" as it is sligthly newer than "test_build.2018May03.6D118.zip" (according to the timestamps inside the zip.)

I ran the following tests (i hope those are the correct ones):
- Selftests - Stubs API test
- Selftests - Quick test (around 15 min)
- LUA - Script API tests

i attached the logs for both API tests, the quick test did not generate a log file but completed fine. The selftest API test contains some [FAIL] while trying to allocate some memory

But i also encountered some weird stuff outside the tests:
- Entering Liveview in Photo mode crashes the camera, the liveview freezes and there is no reaction to any  of the buttons, after a short while the shoulder display just shows "Err" and there is no crash log on the SD card
  Taking Photos in Moviemode works
  The LUA API test is able to enter Liveview in Photomode, however after it finished i went into the magic lantern menu with the trash button and exited again back into liveview in photo mode and the camera crashed instantly

- Every time i start recording a movie i get the "Sound disabled" notification no matter if sound recording is set to manual oder automatic (i did not try an external mic)

Stub test

[Pass] is_play_mode() => 0x1
[Pass] src = fio_malloc(size) => 0x42000088
[Pass] dst = fio_malloc(size) => 0x42804094
[Pass] memcmp(dst, src, 4097) => 0x2
[Pass] edmac_memcpy(dst, src, 4097) => 0x42804094
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x42804094
[Pass] memcmp(dst, src, size) => 0xffffffde
[Pass] edmac_memcpy(dst, src, size) => 0x42804094
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffff8f
[Pass] edmac_memcpy_start(dst, src, size) => 0x42804094
       dt => 0x17e2
[Pass] copied => 0x4014ec
[Pass] copied => 0x4014ec
[Pass] copied => 0x4014ec
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xffffffc7
       edmac_memcpy_finish()
       free(src)
       free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0x1515c0
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x620
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xec
[Pass] tries[1] => 0xfa
[Pass] tries[2] => 0x102
[Pass] tries[3] => 0x100
[Pass] failr[0] => 0x48
[Pass] failw[0] => 0x6e
[Pass] failr[1] => 0x51
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0x7c
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
       times[0] / tries[0] => 0x38
       times[1] / tries[1] => 0x37
       times[2] / tries[2] => 0x3d
       times[3] / tries[3] => 0x3d
Cache tests finished.

[Pass] f = FIO_CreateFile("test.dat") => 0x6
[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) => 0x4089a804
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x6
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
       FIO_CloseFile(f)
       _free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x42000088
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x6
[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] is_file("test.dat") => 0x1
[Pass] FIO_RemoveFile("test.dat") => 0x0
[Pass] is_file("test.dat") => 0x0
[Pass] SetTimerAfter(0, timer_cbr, overrun_cbr, 0) => 0x15
[Pass] timer_func => 0x2
[Pass] SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x7abe
       msleep(900)
[Pass] timer_func => 0x0
       msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x5
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0x7ac0
       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) => 0x2f79e
       msleep(90)
[Pass] timer_func => 0x0
       msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0xe4
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0xc2
[Pass] ABS((get_us_clock_value() - t0) - 110000) => 0xcb
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x2f7a0
       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) => 0x144
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x123
[Pass] ABS((get_us_clock_value() - t0) - 310000) => 0xb6
       t0 = *(uint32_t*)0xC0242014 => 0x1c067
       msleep(250)
       t1 = *(uint32_t*)0xC0242014 => 0x58622
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x3
       LoadCalendarFromRTC( &now )
       s0 = now.tm_sec => 0x39
       Date/time: 2018/05/22 18:34:57
       msleep(1500)
       LoadCalendarFromRTC( &now )
       s1 = now.tm_sec => 0x3a
[Pass] MOD(s1-s0, 60) => 0x1
[Pass] MOD(s1-s0, 60) => 0x1
       m0 = MALLOC_FREE_MEMORY => 0x10600
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[Pass] CACHEABLE(p) => 0x0
       m1 = MALLOC_FREE_MEMORY => 0x10600
       _free(p)
       m2 = MALLOC_FREE_MEMORY => 0x10600
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[Pass] ABS(m0-m2) => 0x0
       m0 = GetFreeMemForAllocateMemory() => 0x121c1c
[Pass] p = (void*)_AllocateMemory(256*1024) => 0x89a7c4
[Pass] CACHEABLE(p) => 0x89a7c4
       m1 = GetFreeMemForAllocateMemory() => 0xe1c10
       _FreeMemory(p)
       m2 = GetFreeMemForAllocateMemory() => 0x121c1c
[Pass] ABS((m0-m1) - 256*1024) => 0xc
[Pass] ABS(m0-m2) => 0x0
       m01 = MALLOC_FREE_MEMORY => 0x10600
       m02 = GetFreeMemForAllocateMemory() => 0x121c1c
[Pass] p = (void*)_alloc_dma_memory(256*1024) => 0x4089a804
[Pass] UNCACHEABLE(p) => 0x4089a804
[Pass] CACHEABLE(p) => 0x89a804
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x4089a804
       _free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(24*1024*1024) => 0x42000068
[Pass] UNCACHEABLE(p) => 0x42000068
       _shoot_free(p)
       m11 = MALLOC_FREE_MEMORY => 0x10600
       m12 = GetFreeMemForAllocateMemory() => 0x121c1c
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x0
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[FAIL] p = (void*)_malloc(50*1024) => 0x0
[FAIL] ABS((m0-m1) - 50*1024) => 0xc800
[Pass] suite = shoot_malloc_suite_contig(24*1024*1024) => 0x109478
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1800000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x109528
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1800000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42000064
[Pass] UNCACHEABLE(p) => 0x42000064
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0x109478
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x2000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x109528
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x2000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42000064
[Pass] UNCACHEABLE(p) => 0x42000064
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(64*1024*1024) => 0x109478
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0xb
[Pass] suite->size => 0x4000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x109528
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x298000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5ce10094
[Pass] UNCACHEABLE(p) => 0x5ce10094
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10a140
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2298000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42000064
[Pass] UNCACHEABLE(p) => 0x42000064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10a4f8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2534000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44000070
[Pass] UNCACHEABLE(p) => 0x44000070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10af80
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2694000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5c89c0e4
[Pass] UNCACHEABLE(p) => 0x5c89c0e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10b9f0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x27f4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a49c0e4
[Pass] UNCACHEABLE(p) => 0x5a49c0e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10ed80
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2954000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5809c0e4
[Pass] UNCACHEABLE(p) => 0x5809c0e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10f3a0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2ab4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4ae9c0e4
[Pass] UNCACHEABLE(p) => 0x4ae9c0e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10fad0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2c14000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48a9c0e4
[Pass] UNCACHEABLE(p) => 0x48a9c0e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10fd70
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2d74000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4669c0e4
[Pass] UNCACHEABLE(p) => 0x4669c0e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1100d8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2ed4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4429c0e4
[Pass] UNCACHEABLE(p) => 0x4429c0e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1103e8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44400064
[Pass] UNCACHEABLE(p) => 0x44400064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x4000000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0x109478
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x15
[Pass] suite->size => 0xfb00000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x109528
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x298000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5ce10094
[Pass] UNCACHEABLE(p) => 0x5ce10094
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10a140
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2298000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42000064
[Pass] UNCACHEABLE(p) => 0x42000064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10a4f8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2534000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44000070
[Pass] UNCACHEABLE(p) => 0x44000070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10af80
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2694000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5c89c0e4
[Pass] UNCACHEABLE(p) => 0x5c89c0e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10b9f0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x27f4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a49c0e4
[Pass] UNCACHEABLE(p) => 0x5a49c0e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10ed80
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2954000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5809c0e4
[Pass] UNCACHEABLE(p) => 0x5809c0e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10f3a0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2ab4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4ae9c0e4
[Pass] UNCACHEABLE(p) => 0x4ae9c0e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10fad0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2c14000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48a9c0e4
[Pass] UNCACHEABLE(p) => 0x48a9c0e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x10fd70
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2d74000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4669c0e4
[Pass] UNCACHEABLE(p) => 0x4669c0e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1100d8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2ed4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4429c0e4
[Pass] UNCACHEABLE(p) => 0x4429c0e4
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1103e8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4ed4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44400064
[Pass] UNCACHEABLE(p) => 0x44400064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1111d8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x5170000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x46400070
[Pass] UNCACHEABLE(p) => 0x46400070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x113070
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x7170000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x46800064
[Pass] UNCACHEABLE(p) => 0x46800064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x114878
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x740c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48800070
[Pass] UNCACHEABLE(p) => 0x48800070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x114c98
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x940c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48c00064
[Pass] UNCACHEABLE(p) => 0x48c00064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x115388
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x96a8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4ac00070
[Pass] UNCACHEABLE(p) => 0x4ac00070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x115708
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xb6a8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x55e00064
[Pass] UNCACHEABLE(p) => 0x55e00064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x115a50
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xb944000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x57e00070
[Pass] UNCACHEABLE(p) => 0x57e00070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x1165c0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xd944000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x58200064
[Pass] UNCACHEABLE(p) => 0x58200064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x116800
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xdbe0000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a200070
[Pass] UNCACHEABLE(p) => 0x5a200070
       chunk = GetNextMemoryChunk(suite, chunk) => 0x116c98
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xfb00000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a600064
[Pass] UNCACHEABLE(p) => 0x5a600064
       chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0xfb00000
       shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x21872c
[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) => 0x218700
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x2186e0
[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) => 0xe0d000ee
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] task_max => 0x84
[Pass] task_max => 0x84
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0xe0d200c0
[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) => 0xe0d4020c
[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) => 0xe0d60096
[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)
[Pass] HALFSHUTTER_PRESSED => 0x1
       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


LUA Test


===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-5-22 19:10:19
===============================================================================

Strict mode tests...
Strict mode tests passed.

Generic tests...
camera = table:
  shutter = table:
    raw = 123
    apex = 8.374999
    ms = 3
    value = 0.003012
  aperture = table:
    raw = 40
    apex = 4
    value = 4
    min = table:
      raw = 40
      apex = 4
      value = 4
    max = table:
      raw = 80
      apex = 9
      value = 22.6
  iso = table:
    raw = 88
    apex = 7.
    value = 400
  ec = table:
    raw = 0
    value = 0
  flash_ec = table:
    raw = 0
    value = 0
  kelvin = 6500
  mode = 20
  metering_mode = 5
  drive_mode = 0
  model = "Canon EOS 6D"
  model_short = "6D"
  firmware = "1.1.8"
  temperature = 178
  state = 0
  reboot = function: p
  bulb = function: p
  shoot = function: p
event = table:
  pre_shoot = nil
  post_shoot = nil
  shoot_task = nil
  seconds_clock = nil
  keypress = nil
  custom_picture_taking = nil
  intervalometer = nil
  config_save = nil
console = table:
  write = function: p
  show = function: p
  hide = function: p
  clear = function: p
lv = table:
  enabled = true
  paused = false
  running = true
  zoom = 1
  resume = function: p
  pause = function: p
  stop = function: p
  info = function: p
  wait = function: p
  start = function: p
lens = table:
  name = "EF24-70mm f/4L IS USM"
  focal_length = 24
  focus_distance = 655350
  hyperfocal = 5013
  dof_near = 4975
  dof_far = 1000000
  af = true
  af_mode = 0
  focus = function: p
display = table:
  idle = true
  height = 480
  width = 720
  circle = function: p
  on = function: p
  pixel = function: p
  print = function: p
  draw = function: p
  off = function: p
  notify_box = function: p
  load = function: p
  screenshot = function: p
  clear = function: p
  rect = function: p
  line = function: p
key = table:
  last = 0
  wait = function: p
  press = function: p
menu = table:
  visible = false
  get = function: p
  open = function: p
  new = function: p
  set = function: p
  block = function: p
  close = function: p
testmenu = userdata:
  value = 0
  name = "Script API tests"
  help = "Various tests for the Lua scripting API."
  help2 = "When adding new Lua APIs, tests for them should go here."
  advanced = 0
  depends_on = 0
  edit_mode = 0
  hidden = false
  icon_type = 5
  jhidden = false
  max = 0
  min = 0
  selected = true
  shidden = false
  starred = false
  submenu_height = 0
  submenu_width = 0
  unit = 0
  works_best_in = 0
  run_in_separate_task = 0
  select = function: p
  update = nil
  info = nil
  rinfo = nil
  warning = nil
movie = table:
  recording = false
  stop = function: p
  start = function: p
dryos = table:
  clock = 1771
  ms_clock = 1771032
  prefix = "IMG_"
  dcim_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "B:/DCIM/"
    path = "B:/DCIM/100CANON/"
  config_dir = table:
    exists = true
    create = function: p
    children = function: p
    files = function: p
    parent = table:
      exists = true
      create = function: p
      children = function: p
      files = function: p
      parent = table:
        exists = true
        create = function: p
        children = function: p
        files = function: p
        parent = nil
        path = "B:/"
      path = "ML/"
    path = "ML/SETTINGS/"
  ml_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 9918
    folder_number = 100
    free_space = 14187776
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  shooting_card = table:
    cluster_size = 32768
    drive_letter = "B"
    file_number = 9918
    folder_number = 100
    free_space = 14187776
    type = "SD"
    path = "B:/"
    _card_ptr = userdata
  date = table:
    day = 22
    month = 5
    year = 2018
    sec = 21
    yday = 142
    isdst = false
    hour = 19
    wday = 3
    min = 10
  remove = function: p
  call = function: p
  directory = function: p
interval = table:
  time = 10
  count = 0
  running = 0
  stop = function: p
battery = table:
  level = 45
  id = 0
  performance = 3
  time = 9405
  drain_rate = 17
task = table:
  yield = function: p
  create = function: p
property = table:
Generic tests completed.

Module tests...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Testing exposure settings, module 'camera'...
Camera    : Canon EOS 6D (6D) 1.1.8
Lens      : EF24-70mm f/4L IS USM
Shoot mode: 20
Shutter   : ,320 (raw 123, 0.003012s, 3ms, apex 8.374999)
Aperture  : Ā4.0 (raw 40, f/4, apex 4)
Av range  : Ā4.0..Ā22 (raw 40..80, f/4..f/22.6, apex 4..9)
ISO       : 400 (raw 88, 400, apex 7.)
EC        : 0.0 (raw 0, 0 EV)
Flash EC  : 0.0 (raw 0, 0 EV)
Please switch to M mode.
Setting shutter to random values...
Setting ISO to random values...
Setting aperture to random values...
Please switch to Av mode.
Setting EC to random values...
Setting Flash EC to random values...
Exposure tests completed.

Testing module 'lv'...
Starting LiveView...
Setting zoom to x1...
Setting zoom to x5...
Setting zoom to x10...
Setting zoom to x5...
Setting zoom to x1...
Setting zoom to x10...
Setting zoom to x1...
Pausing LiveView...
Resuming LiveView...
Stopping LiveView...
LiveView tests completed.

Focus distance: 655350
Focusing backward...
Focus distance: 655350
Focusing forward with step size 3, wait=true...
...
Focus distance: 510
Focusing backward with step size 3, wait=true...
.
Focus distance: 780
Focus range: 3 steps forward, 1 steps backward.
Focusing forward with step size 3, wait=false...
...
Focus distance: 830
Focusing backward with step size 3, wait=false...
.
Focus distance: 830
Focus range: 3 steps forward, 1 steps backward.
Focusing forward with step size 2, wait=true...
.......................
Focus distance: 380
Focusing backward with step size 2, wait=true...
.....................
Focus distance: 655350
Focus range: 23 steps forward, 21 steps backward.
Focusing forward with step size 2, wait=false...
.......................
Focus distance: 470
Focusing backward with step size 2, wait=false...
.....................
Focus distance: 655350
Focus range: 23 steps forward, 21 steps backward.
Focusing forward with step size 1, wait=true...
............................................................................................
Focus distance: 370
Focusing backward with step size 1, wait=true...
..........................................................................................
Focus distance: 655350
Focus range: 92 steps forward, 90 steps backward.
Focusing forward with step size 1, wait=false...
............................................................................................
Focus distance: 390
Focusing backward with step size 1, wait=false...
..........................................................................................
Focus distance: 655350
Focus range: 92 steps forward, 90 steps backward.
Focus test completed.

Done!


dfort

Thanks for testing. The test_build.2018May03.6D118.zip has the lua_fix branch merged into it so it is better to test with that one but it does look like there are some issue to work out.

I'm currently filling in at work for someone on vacation then I'm taking a vacation for about a month so don't expect anything from me in a hurry.

jcberlin

 I just got my 6D back from Canon for repair.  They updated me to firmware 1.1.8 so ML is not working.  Sounds like I am out of luck for a while...love this program used it all the time.   :'(

Levas

You could always downgrade to firmware 1.1.6
There's a link to the windows version:
https://builds.magiclantern.fm/6D-116.html
Direct link to file:
http://pel.hu/down/eos6d-v116-win.zip

Jokemeister

@JCBERLIN....many of us have downgraded to 1.1.6 so don't be afraid that you will have an unstable camera or lose some functions. Check the 1.1.8 firmware release notes here: https://www.canon.com.au/support/support-news/firmware-updates/eos-6d-firmware-update-version-1-1-8 and unless you are in this specific situation you should be just fine.

Levas

Not sure how many of you know their way with the adtg_gui module.
But here's a sheet with some interesting registers to override:
https://docs.google.com/spreadsheets/d/1iapLI7UrgfCJGwPSFsyhYeKl8fSTY4RVXvDR7MiaOp4/edit?usp=sharing

Left side of the sheet interesting registers and their default values in every video and photo mode.
At the right side of the sheet values to override with adtg_gui module to get interesting crop modes.

Usable fps modes:
2688 x 1222 @ 24fps
2560 x 1222 @ 25fps
3384 x 952 @ 25fps

And just for fun:
5480x1190 @ 11 fps

Danne

Cool Levas. Could you put in the registers for the 6D and 2560x1222 25fps here. Like to update my adtg_gui version and numbers for 6D are all wrong I guess:
    else if (is_camera("6D", "1.1.6"))
    {

       if (regs[reg].dst == 0xC0F0)
       {

           switch (regs[reg].reg)
           {
                case 0x6804:               
                    return 0x5040298;       
                case 0x6014:
                   return 0x747;
                case 0x6713c:
                   return 0x535;
     
            }

        }
        else if (regs[reg].dst == 2)        /* ADTG 2 */
        {
            switch (regs[reg].reg)
            {
                 case 0x8172:
                    return 0x4e6;
                 case 0x8178:
                    return 0x4e6;
                 case 0x8000:
                    return 0x5;

            }

        }

    }




For my eosm this works wonders for 2520x1320 24 fps:
    else if (is_camera("EOSM", "2.0.2"))
    {

       if (regs[reg].dst == DST_CMOS)
       {
           switch (regs[reg].reg)
           {
                 case 7:
    return 0xaa9;       /* CMOS[7]: ISO related? */
           }
       }
       if (regs[reg].dst == 0xC0F0)
       {

           switch (regs[reg].reg)
           {
            case 0x6804:                /* C0F06804 - raw resolution */
               return 0x5490298;       /* 2520x1320, works */
            /* return 0x5590298;        2520x1336, corruption */
                case 0x6014:
                    return 0x745;
    case 0x713c:
    return 0x535;
            }

        }
        else if (regs[reg].dst == 2)        /* ADTG 2 */
        {
            switch (regs[reg].reg)
            {
            case 0x82b6:
       return 0x8f4;      /* it's 5 in zoom mode and 6 in 1080p; this also overrides ADTG4 */
            case 0x8172:
       return 0x87c; /* without this, you get some weird artifacts; this should only go to ADTG2, not 4 */
    case 0x8178:
       return 0x87c;

            }

        }

    }

Levas

Hi Danne,

I think you can update it for the 6d with these values:


else if (is_camera("6D", "1.1.6"))
    {

if (regs[reg].dst == DST_CMOS)
       {
           switch (regs[reg].reg)
           {
                 case 7:
    return 0x268;       /* CMOS[7]: White bar at the bottom removement */
           }
       }

       if (regs[reg].dst == 0xC0F0)
       {

           switch (regs[reg].reg)
           {
                case 0x6804:               
                    return 0x4e502a0;       
                case 0x6014:
                   return 0x5ba;
                case 0x713c:               
                    return 0x516;       
                case 0x7150:
                   return 0x4e5;
                case 0x6010:               
                    return 0x2b9;       
                case 0x6008:
                   return 0x2b902b9;
                case 0x600c:
                   return 0x2b902b9;
             
               
            }

        }
        else if (regs[reg].dst == 2)        /* ADTG 2 */
        {
            switch (regs[reg].reg)
            {
                 case 0x8172:
                    return 0x695;
                 case 0x8178:
                    return 0x695;
                 case 0x82f8:
                    return 0x697;
                 case 0x8179:
                    return 0x51c;
                 case 0x82f9:
                    return 0x560;
                 case 0x800c:
                    return 0x0;
                 case 0x8000:
                    return 0x5;

            }

        }

    }




Danne

Great. Helps me get some wider perspective around these registers on different cams.

Levas

Ok, here's a short tutorial for how to use adtg_gui module (not for the faint hearted  :P )
First download the most advanced Magic lantern version for the 6d at this moment:
The crop_rec_4K build from the experiments download page:
https://builds.magiclantern.fm/jenkins/job/crop_rec_4k/72/artifact/platform/6D.116/magiclantern-crop_rec_4k.2018Mar10.6D116.zip

After that, download the adtg_gui module:
From the module downloads page:
https://builds.magiclantern.fm/jenkins/job/iso-research/11/artifact/modules/adtg_gui/adtg_gui.mo

Copy the adtg_gui module file in the "\ML\modules\" directory on your SD-card.

Put the SD in your precious 6d and turn camera on:
Enable, at least, the following modules:
adtg_gui
file_man
mlv_lite
mlv_play
mlv_snd

Turn camera off, put it on photo mode with the switch button and turn it back on.

Go to the ML menu (trashcan button) -> go to raw video menu and set 'Preview' option to 'Framing'
Go to 'Debug' tab in ML menu and turn on the option 'ADTG register' (use set button to activate) go inside the ADTG registers options (use Q button)
Change 'show' to 'known regs only'
Click on advanced and turn on 'digic registers'.
Use half shutter press to go outside the ML menu.

Now switch the button to video mode and press the magnifying button a few times so you've seen all video options 1x, 5x and 10x zoom.
Now switch back to photo mode and look inside the 'adtg registers' menu again with the q button.
Now you'll see a lot of registers, which you can scroll to with the scrolling wheel.

All these registers have values, which can be overriden by using the 'set' button and entering a new value.
Now for those new values, see this spreadsheet and see the columns to the right:
https://docs.google.com/spreadsheets/d/1iapLI7UrgfCJGwPSFsyhYeKl8fSTY4RVXvDR7MiaOp4/edit#gid=0

once you've altered the registers with new values, switch back to video mode, don't be scared by the horrible live view you'll see now  :P
and press the magnifying button a few times so you've been through all modes and stop at 5x zoom.

voila, new resolutions to work with.

P.S.

If the camera doesn't respond, doesn't give any moving live view, gives error 70 or 80 etc. just switch it off and take out the battery
I've fiddled many hours with adtg_gui and have seen some horrible things happening to the live view, but battery pull always saved the day (and the camera).
Even sometimes have seen that after a battery pull, live view still was flickering or had projections of text on the display, but that disappeared after a few minutes...
Like I said, not for the faint hearted  ;D

Levas

@Danne, find out a workflow for horizontal resolutions that probably works for all camera's.
Can choose any horizontal resolution you want, but if affects the framerate.

When you have adtg_gui enabled, go to photo mode and take a picture, now all registers have the values used for full sensor readout. (photo mode opens up the full sensor and uses the physical shutter for shutter time)
As you maybe already know, the 6804 register holds the values for horizontal and vertical resolutions separated by a '0' or actually, the vertical value comes first and the horizontal value are the numbers after the 0.
And this probably goes for all cams, these horizontal values are close, near to the A timer values 6010, 6008 and 600c (and  6824, 6828, 68c2 & 6830).
Now what you do is, enable adtg_gui as you would do normally (also with digic registers 'on') and take a picture in photo mode (no live view).
now look at the values for:
6804 (especially the values that comes after the '0', they represent the horizontal resolution).
And the A-timer values:
6010
6008
600c
and maybe 6824, 6828, 68c2 & 6830 (visible in 'image size regs only')

Now switch to video mode and open adtg_gui, alter the part after the '0' in 6804 for the value that you have seen in photo mode and override all the A timers also with 'photo mode' values:
6010
6008
600c
and maybe 6824, 6828, 68c2 & 6830 (visible in 'image size regs only')

When I did this I had a full sensor width video mode with 5x zoom vertical resolution (had to alter the CMOS 6 and 7 settings to get correct live view preview)
Now when you have this, you can alter the horizontal resolution to whatever you like.
6804 has 3 values after the '0'.
Just change the middle value from the 3 values after the '0'.
If you change that middle value 8 times higher, do the same for the middle number values for all the A-timers.
If you change it to 4 clicks lower, do the same for the A-timers.

Do you see, they're connected, and the numbers are hexadecimal so the middle number from a 3 valued number gives increments or decrements of 16 pixels (x column factor used in cam).




Danne

Thanks for sharing methodology. Getting there one piece at the time. Ok, following the steps I am able to get all registers mentioned:
Photo mode(100D):

Resolution
COFO6804   0X4a701d7

A timer values
COFO6008   0x57b057b
COFO600c   0x57b057b
COFO6010   0x57b

Image regs only
6824      0x56a
6828      0x56a
68c2      0x56a
6830      0x56a

I add them to my lazy short cut and run the registers in movie mode:
    if (is_camera("100D", "1.0.1"))
    {

       if (regs[reg].dst == 0xC0F0)
       {

           switch (regs[reg].reg)
           {
                case 0x6804:                /* C0F06804 - raw resolution */
                    return 0x53902a1;       /* 2520x1304 24.006fps 14-bit lossless */
                 /* return 0x50802a1;          2520x1248 24.006fps 14-bit lossless */
                case 0x6008:
                    return 0x57b057b;
                case 0x600c:
                    return 0x57b057b;
                case 0x6010:
                    return 0x57b057b;
                case 0x6824:
                    return 0x56a;
                case 0x6028:
                    return 0x56a;
                case 0x68c2:
                    return 0x56a;
                case 0x6830:
                    return 0x56a;
            }

        }

    }


Getting 15 fps anf a frozen screen. I assume this is the heart of the matter but mre registers needed here to get viewable image:
How do you find the other registers needed? Bilal has them all in his spreadsheet:
https://docs.google.com/spreadsheets/d/1TzPxh7ai5JAoEI8zllaiiF1IDF5tAQam2BKRujyIYQU/edit#gid=0

Levas

- THE VALUES IN THIS CONVERSATION ARE FROM THE 100D -

Probably getting wrong with the used value for 6804 register:
Quote
if (is_camera("100D", "1.0.1"))
    {

       if (regs[reg].dst == 0xC0F0)
       {

           switch (regs[reg].reg)
           {
                case 0x6804:                /* C0F06804 - raw resolution */
                    return 0x53902a1;       /* 2520x1304 24.006fps 14-bit lossless */

As said, the first three combinations are vertical resolution and the three combinations after the '0' are horizontal resolution.
value 53902a1 translates to 539 0 2a1
539 (hexadecimal) = 1337(decimal) vertical pixels
2a1 (hexadecimal) = 673 (decimal) horizontal pixels,  as I see the numbers my guess is your camera has also 4 columns readout, 673 x 4 = 2692 pixels.

Now you've found this value for 6804 in photo mode:
4a701d7
4a7 (hexadecimal) = 1191 (decimal) vertical pixels (which is not as much as I expected  ??? , would expect whole vertical sensor like 3000 something )
1d7 (hexadecimal) = 471 (decimal) horizontal pixels, 471 x 4 columns = 1884 (which is not as much as I expected  ??? , would expect whole horizontal sensor value  like 5000 something)

A timers are related to horizontal resolutions and must always be a higher number then the horizontal value in 6804
your A timers have value 57b(hexadecimal) = 1403 (decimal), which is higher then horizontal value, but not higher then full sensor width (5000 something).

So the values you have right now at the moment are not the ones you want.


Forget to use column factor, seems that your A-timers have right value, 57b(hexadecimal) = 1403 (decimal) x 4 = 5612 pixels, that looks right!
So you have the correct values for all the A-timers 8)

To get the values for full sensor photo mode I turn my camera on in photo mode, without live view enabled and turn adtg_gui to on and set digic registers on.
After that I press the shutter button and look into adtg_gui for the values (be sure to have not used live view or image preview or something, hmmm I have set image preview to off in Canon menu, maybe that messes up your values  :-\ )

Now when you have the proper values for photo mode, you have to combine the horizontal resolutions from photo mode, with the vertical resolutions from 5x zoom mode.
So let's say you had proper values for photo mode for 6804, so 4a701d7 and normally you are using 53902a1 for 6804.
That would make a combined 6804 = 53901d7

Levas

@Danne, you're on a Mac, right.
For hexadecimal to decimal values you can use plain calculator app:
http://osxdaily.com/2015/06/14/access-scientific-programmer-calculator-mac-os-x/
Set it to 'programmer' mode and use the three buttons at the right (8, 10 and 16)  set it to 16 for hexadecimal input or on 10 for decimal input.
If you set it to 16 and type in a value and press the 10 button for decimal settings, it recalculates the value.

Danne

Sorry, may register for resolution was in fact:
                case 0x6804:                /* C0F06804 - raw resolution */
                    return 0x4a701d7;


The issue now is I get only a frozen image and canĀ“t get out of it. Will look att your workflow description regarding timers.

Ehm nice tip on the calculator dude.

Levas

- THE VALUES IN THIS CONVERSATION ARE FROM THE 100D -

In that case try this value for 6804
53901d7 (Combined value from the vertical resolution from what you're normal using and the horizontal resolution value what you get from photo mode)
In combination with the A-timer values you found.

If live view freezes, most of the times the A and B timers do not match with resolution settings in 6804.

If ML live view framing preview works, but looks scrambled, try changing the last character of the 6804 combination,  so 53901d7 -> 53901d8 (1 value up) or 53901d6 (1 value down). Try more values up and down, the last character determines if  ML raw framing preview looks perfect or scrambled

Danne

Not scrambled, only frozen, tried the suggested value with same result. Also tested with image review to of in photo mode and got a new 6804 number(still frozen youghurt screen):
                case 0x6804:                /* C0F06804 - raw resolution */
                    return 0xdcf0541;

Getting 5208x3496 selected but frozen

Levas

- THE VALUES IN THIS CONVERSATION ARE FROM THE 100D -

Ah now we're getting somewhere  :)

6804 in photo mode = dcf0541
Now combine this one with the one you're always using:
So try new value for 6804 = 5390541

Giving you in fact the vertical resolution you otherwise had, about 1300 pixels and the horizontal resolution from full sensor width, a little less then 5380

Should work I guess   :D

Danne

Still frozen after setting this  8):
    if (is_camera("100D", "1.0.1"))
    {

       if (regs[reg].dst == 0xC0F0)
       {

           switch (regs[reg].reg)
           {
                case 0x6804:               
                    return 0x5390541;   
                case 0x6008:
                    return 0x57b057b;
                case 0x600c:
                    return 0x57b057b;
                case 0x6010:
                    return 0x57b057b;
                case 0x6824:
                    return 0x56a;
                case 0x6028:
                    return 0x56a;
                case 0x68c2:
                    return 0x56a;
                case 0x6830:
                    return 0x56a;
            }

        }

    }


Must be som other registers that needs to be set here. Fps at 16fps...

Levas

- THE VALUES IN THIS CONVERSATION ARE FROM THE 100D -

Probably the vertical value of 539 doesn't work, I bet that's already tweaked for more resolution.
What is the value of 6804 in plain vanilla crop mode ?
Put on adtg_gui and digic registers on, but do NOT load any preset in adtg_gui, do not override a single register.

Now go to video mode 5x zoom / 1:1 crop mode and lookup the value of 6804 in adtg_gui.
Now use the first 3 characters of this value and use the other values from photo mode, hopefully that works  8)

Danne

                case 0x6804:               
                    return 0x45802a1


Still frosty:
    if (is_camera("100D", "1.0.1"))
    {

       if (regs[reg].dst == 0xC0F0)
       {

           switch (regs[reg].reg)
           {
                case 0x6804:               
                    return 0x4580541;   
                case 0x6008:
                    return 0x57b057b;
                case 0x600c:
                    return 0x57b057b;
                case 0x6010:
                    return 0x57b057b;
                case 0x6824:
                    return 0x56a;
                case 0x6028:
                    return 0x56a;
                case 0x68c2:
                    return 0x56a;
                case 0x6830:
                    return 0x56a;
            }

        }

    }

Levas

Hmm, maybe add these registers:

8000 set to value 5
800c set to value 0

800c is the lineskipping value, which is already 0 in crop mode, but not in 1080p, my experience is that the camera is more stable while fiddling with these registers if it's already set to 0.

And I see I have altered CMOS 6 and 7.
CMOS 6 is set to 0
CMOS 7 is set to 163, but that is something to try and error on your camera.