Canon 70D version magiclantern-lua_fix.2018Mar31.70D112.zip
Memory Benchmark:
mode: play-ph lcd, global draw on
Display on 72.24 mb/s
Display off 72.39 mb/s
memcpy cacheable
This often went as high as low 80's with a only a difference of less than 1 mb. On one occasion I ran it and the display off was marginally slower.
Lua Test
===============================================================================
ML/SCRIPTS/API_TEST.LUA - 2018-4-15 14:59:15
===============================================================================
Strict mode tests...
Strict mode tests passed.
Generic tests...
arg = table:
[0] = "API_TEST.LUA"
camera = table:
shutter = table:
raw = 101
apex = 5.625
ms = 20
value = 0.020263
aperture = table:
raw = 32
apex = 3.
value = 2.8
min = table:
raw = 21
apex = 1.625
value = 1.7
max = table:
raw = 72
apex = 8.
value = 16
iso = table:
raw = 104
apex = 9.
value = 1600
ec = table:
raw = 0
value = 0
flash = true
flash_ec = table:
raw = 8
value = 1.
kelvin = 5300
mode = 3
metering_mode = 3
drive_mode = 19
model = "Canon EOS 70D"
model_short = "70D"
firmware = "1.1.2"
temperature = 172
gui = table:
menu = false
play = false
play_photo = false
play_movie = false
qr = false
idle = true
bulb = function: p
reboot = function: p
shoot = function: p
wait = function: p
burst = 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:
clear = function: p
show = function: p
write = function: p
hide = function: p
lv = table:
enabled = false
paused = false
running = false
zoom = 1
overlays = false
stop = function: p
pause = function: p
start = function: p
wait = function: p
info = function: p
resume = function: p
lens = table:
name = "18-35mm"
focal_length = 35
focus_distance = 820
hyperfocal = 23096
dof_near = 796
dof_far = 845
af = true
af_mode = 0
focus = function: p
autofocus = function: p
display = table:
idle = nil
height = 480
width = 720
clear = function: p
notify_box = function: p
off = function: p
circle = function: p
rect = function: p
load = function: p
screenshot = function: p
pixel = function: p
draw = function: p
line = function: p
print = function: p
on = function: p
key = table:
last = 10
wait = function: p
press = function: p
menu = table:
visible = false
get = function: p
close = function: p
open = function: p
set = function: p
new = function: p
block = function: p
select = function: p
movie = table:
recording = false
start = function: p
stop = function: p
dryos = table:
clock = 91
ms_clock = 91742
image_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 = 7381
folder_number = 100
free_space = 7715808
type = "SD"
_card_ptr = userdata
path = "B:/"
shooting_card = table:
cluster_size = 32768
drive_letter = "B"
file_number = 7381
folder_number = 100
free_space = 7715808
type = "SD"
_card_ptr = userdata
path = "B:/"
date = table:
min = 59
sec = 16
wday = 1
year = 2018
yday = 105
day = 15
isdst = false
hour = 14
month = 4
rename = function: p
remove = function: p
call = function: p
directory = function: p
interval = table:
time = 10
count = 0
running = false
stop = function: p
battery = table:
level = 72
id = 1
performance = 3
time = nil
drain_rate = 30
task = table:
create = function: p
yield = function: p
property = table:
Generic tests completed.
Module tests...
Testing file I/O...
Copy test: autoexec.bin -> tmp.bin
Copy test OK
Append test: tmp.txt
Append test OK
Rename test: apple.txt -> banana.txt
Rename test OK
Rename test: apple.txt -> ML/banana.txt
Rename test OK
File I/O tests completed.
Testing Canon GUI functions...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Exit MENU mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Pause LiveView...
Resume LiveView...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Stop LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter MENU mode...
Exit MENU mode...
Enter PLAY mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Enter MENU mode...
Exit MENU mode...
Start LiveView...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Resume LiveView...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Stop LiveView...
Start LiveView...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Enter MENU mode...
Enter MENU mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter PLAY mode...
Enter MENU mode...
Enter PLAY mode...
Enter PLAY mode...
Exit PLAY mode...
Pause LiveView...
Enter MENU mode...
Exit MENU mode...
Pause LiveView...
Resume LiveView...
Enter MENU mode...
Canon GUI tests completed.
Testing ML menu API...
Menu tests completed.
Testing picture taking functions...
Snap simulation test...
Single picture...
B:/DCIM/100CANON/IMG_7382.CR2 not found.
B:/DCIM/100CANON/IMG_7382.JPG not found.
Stub Test
[Pass] is_play_mode() => 0x1
[INFO] Camera model: Canon EOS 70D 1.1.2 (0x80000325 70D)
[Pass] is_camera("DIGIC", "*") => 0x1
[Pass] is_camera(__camera_model_short, firmware_version) => 0x1
[Pass] src = fio_malloc(size) => 0x4212009c
[Pass] dst = fio_malloc(size) => 0x429240a8
[Pass] memcmp(dst, src, 4097) => 0x4
[Pass] edmac_memcpy(dst, src, 4097) => 0x429240a8
[Pass] memcmp(dst, src, 4097) => 0x0
[Pass] edmac_memcpy(dst, src, 4097) => 0x429240a8
[Pass] memcmp(dst, src, size) => 0x53
[Pass] edmac_memcpy(dst, src, size) => 0x429240a8
[Pass] memcmp(dst, src, size) => 0x0
[Pass] memcmp(dst, src, size) => 0xffffffd2
[Pass] edmac_memcpy_start(dst, src, size) => 0x429240a8
dt => 0x18d4
[Pass] copied => 0x4170d8
[Pass] copied => 0x4170d8
[Pass] copied => 0x4170d8
[Pass] memcmp(dst, src, copied) => 0x0
[Pass] memcmp(dst, src, copied + 16) => 0xffffffef
edmac_memcpy_finish()
free(src)
free(dst)
Cache test A (EDMAC on BMP buffer)...
[Pass] bmp = bmp_load("ML/CROPMKS/CINESCO2.BMP", 1) => 0x8cea90
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x149e
[Pass] old => 0x0
[Pass] irq => 0xc0
[Pass] differences => 0x0
Cache test B (FIO on 8K buffer)...
[Pass] tries[0] => 0xe9
[Pass] tries[1] => 0x10d
[Pass] tries[2] => 0xf3
[Pass] tries[3] => 0xff
[Pass] failr[0] => 0x66
[Pass] failw[0] => 0xb2
[Pass] failr[1] => 0x6a
[Pass] failw[1] => 0x0
[Pass] failr[2] => 0x0
[Pass] failw[2] => 0xcc
[Pass] failr[3] => 0x0
[Pass] failw[3] => 0x0
times[0] / tries[0] => 0x26
times[1] / tries[1] => 0x26
times[2] / tries[2] => 0x26
times[3] / tries[3] => 0x25
Cache tests finished.
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x1
[Pass] lv_focus_status => 0x3
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[FAIL] wait_focus_status(1000, 3) => 0x0
[FAIL] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] wait_focus_status(1000, 3) => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x2
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x1
[Pass] get_focus_confirmation() => 0x0
[Pass] HALFSHUTTER_PRESSED => 0x0
[Pass] lv_focus_status => 0x1
[Pass] f = FIO_CreateFile("test.dat") => 0x5
[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) => 0x4092f734
[Pass] f = FIO_OpenFile("test.dat", O_RDONLY | O_SYNC) => 0x5
[Pass] FIO_ReadFile(f, p, 0x20000) => 0x20000
FIO_CloseFile(f)
_free_dma_memory(p)
[Pass] count => 0x3a98
[Pass] buf = fio_malloc(0x1000000) => 0x4212009c
[Pass] FIO_GetFileSize_direct("test.dat") => 0x82000000
[Pass] f = FIO_OpenFile("test.dat", O_RDWR | O_SYNC) => 0x5
[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) => 0xdebe
msleep(900)
[Pass] timer_func => 0x0
msleep(200)
[Pass] timer_func => 0x1
[Pass] ABS((timer_time/1000 - t0) - 1000) => 0x8
[Pass] ABS((timer_arg - ta0) - 1000) => 0xa
[Pass] timer = SetTimerAfter(1000, timer_cbr, overrun_cbr, 0) => 0xdf1e
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) => 0x38b86
msleep(90)
[Pass] timer_func => 0x0
msleep(20)
[Pass] timer_func => 0x1
[Pass] ABS(DeltaT(timer_time, t0) - 100000) => 0xe1
[Pass] ABS(DeltaT(timer_arg, ta0) - 100000) => 0xc8
[Pass] ABS((get_us_clock() - t0) - 110000) => 0x22a
[Pass] SetHPTimerAfterNow(90000, next_tick_cbr, overrun_cbr, 0) => 0x38b88
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) => 0x2a6
[Pass] ABS(DeltaT(timer_arg, ta0) - 300000) => 0x28c
[Pass] ABS((get_us_clock() - t0) - 310000) => 0x239
t0 = GET_DIGIC_TIMER() => 0x5d780
msleep(250)
t1 = GET_DIGIC_TIMER() => 0x99b19
[Pass] ABS(MOD(t1-t0, 1048576)/1000 - 250) => 0x4
LoadCalendarFromRTC( &now )
s0 = now.tm_sec => 0x33
Date/time: 2018/04/15 14:14:51
msleep(1500)
LoadCalendarFromRTC( &now )
s1 = now.tm_sec => 0x35
[Pass] MOD(s1-s0, 60) => 0x2
[Pass] MOD(s1-s0, 60) => 0x2
m0 = MALLOC_FREE_MEMORY => 0x4c6c0
[Pass] p = (void*)_malloc(50*1024) => 0x112490
[Pass] CACHEABLE(p) => 0x112490
m1 = MALLOC_FREE_MEMORY => 0x3feb0
_free(p)
m2 = MALLOC_FREE_MEMORY => 0x4c6c0
[Pass] ABS((m0-m1) - 50*1024) => 0x10
[Pass] ABS(m0-m2) => 0x0
m0 = GetFreeMemForAllocateMemory() => 0x242724
[Pass] p = (void*)_AllocateMemory(128*1024) => 0x92f6f4
[Pass] CACHEABLE(p) => 0x92f6f4
m1 = GetFreeMemForAllocateMemory() => 0x222718
_FreeMemory(p)
m2 = GetFreeMemForAllocateMemory() => 0x242724
[Pass] ABS((m0-m1) - 128*1024) => 0xc
[Pass] ABS(m0-m2) => 0x0
m01 = MALLOC_FREE_MEMORY => 0x4c6c0
m02 = GetFreeMemForAllocateMemory() => 0x242724
[Pass] p = (void*)_alloc_dma_memory(128*1024) => 0x4092f734
[Pass] UNCACHEABLE(p) => 0x4092f734
[Pass] CACHEABLE(p) => 0x92f734
[Pass] UNCACHEABLE(CACHEABLE(p)) => 0x4092f734
_free_dma_memory(p)
[Pass] p = (void*)_shoot_malloc(16*1024*1024) => 0x4212008c
[Pass] UNCACHEABLE(p) => 0x4212008c
_shoot_free(p)
m11 = MALLOC_FREE_MEMORY => 0x4c6c0
m12 = GetFreeMemForAllocateMemory() => 0x242784
[Pass] ABS(m01-m11) => 0x0
[Pass] ABS(m02-m12) => 0x60
[Pass] suite = shoot_malloc_suite_contig(16*1024*1024) => 0xff700
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x1000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x1123d0
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x1000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42120088
[Pass] UNCACHEABLE(p) => 0x42120088
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite_contig(0) => 0xff700
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x1
[Pass] suite->size => 0x2000000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x112238
[Pass] chunk->signature => 'MemChunk'
[Pass] chunk->size => 0x2000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42104070
[Pass] UNCACHEABLE(p) => 0x42104070
largest_shoot_block = suite->size => 0x2000000
[INFO] largest_shoot_block: 32MB
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(largest_shoot_block + 1024*1024) => 0xff700
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x2
[Pass] suite->size => 0x2100000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x112238
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42104070
[Pass] UNCACHEABLE(p) => 0x42104070
chunk = GetNextMemoryChunk(suite, chunk) => 0x112308
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2100000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4410407c
[Pass] UNCACHEABLE(p) => 0x4410407c
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0x2100000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] suite = shoot_malloc_suite(0) => 0xff700
[Pass] suite->signature => 'MemSuite'
[Pass] suite->num_chunks => 0x14
[Pass] suite->size => 0xf700000
[Pass] chunk = GetFirstChunkFromSuite(suite) => 0x112238
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2000000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x42104070
[Pass] UNCACHEABLE(p) => 0x42104070
chunk = GetNextMemoryChunk(suite, chunk) => 0x112308
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x220c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4410407c
[Pass] UNCACHEABLE(p) => 0x4410407c
chunk = GetNextMemoryChunk(suite, chunk) => 0x112340
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x22f4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x581140e4
[Pass] UNCACHEABLE(p) => 0x581140e4
chunk = GetNextMemoryChunk(suite, chunk) => 0x112378
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x23dc000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4af140e4
[Pass] UNCACHEABLE(p) => 0x4af140e4
chunk = GetNextMemoryChunk(suite, chunk) => 0x1123b0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x24c4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48b140e4
[Pass] UNCACHEABLE(p) => 0x48b140e4
chunk = GetNextMemoryChunk(suite, chunk) => 0x1123e8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x25ac000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x467140e4
[Pass] UNCACHEABLE(p) => 0x467140e4
chunk = GetNextMemoryChunk(suite, chunk) => 0x112490
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2694000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5c9140e4
[Pass] UNCACHEABLE(p) => 0x5c9140e4
chunk = GetNextMemoryChunk(suite, chunk) => 0x1124c8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x277c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a5140e4
[Pass] UNCACHEABLE(p) => 0x5a5140e4
chunk = GetNextMemoryChunk(suite, chunk) => 0x112500
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x2864000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x443140e4
[Pass] UNCACHEABLE(p) => 0x443140e4
chunk = GetNextMemoryChunk(suite, chunk) => 0x112538
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4864000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x58200064
[Pass] UNCACHEABLE(p) => 0x58200064
chunk = GetNextMemoryChunk(suite, chunk) => 0x112570
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x4b78000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a200070
[Pass] UNCACHEABLE(p) => 0x5a200070
chunk = GetNextMemoryChunk(suite, chunk) => 0x1125a8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x6b78000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5a600064
[Pass] UNCACHEABLE(p) => 0x5a600064
chunk = GetNextMemoryChunk(suite, chunk) => 0x1125e0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x6e8c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x5c600070
[Pass] UNCACHEABLE(p) => 0x5c600070
chunk = GetNextMemoryChunk(suite, chunk) => 0x112618
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x8e8c000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x44400064
[Pass] UNCACHEABLE(p) => 0x44400064
chunk = GetNextMemoryChunk(suite, chunk) => 0x112650
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0x91a0000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x46400070
[Pass] UNCACHEABLE(p) => 0x46400070
chunk = GetNextMemoryChunk(suite, chunk) => 0x112688
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xb1a0000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x46800064
[Pass] UNCACHEABLE(p) => 0x46800064
chunk = GetNextMemoryChunk(suite, chunk) => 0x1126c0
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xb4b4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48800070
[Pass] UNCACHEABLE(p) => 0x48800070
chunk = GetNextMemoryChunk(suite, chunk) => 0x1126f8
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xd4b4000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x48c00064
[Pass] UNCACHEABLE(p) => 0x48c00064
chunk = GetNextMemoryChunk(suite, chunk) => 0x112730
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xd7c8000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x4ac00070
[Pass] UNCACHEABLE(p) => 0x4ac00070
chunk = GetNextMemoryChunk(suite, chunk) => 0x112768
[Pass] chunk->signature => 'MemChunk'
[Pass] total += chunk->size => 0xf700000
[Pass] p = GetMemoryAddressOfMemoryChunk(chunk) => 0x55e00064
[Pass] UNCACHEABLE(p) => 0x55e00064
chunk = GetNextMemoryChunk(suite, chunk) => 0x0
[Pass] total => 0xf700000
shoot_free_suite(suite); suite = 0; chunk = 0;
[Pass] strlen("abc") => 0x3
[Pass] strlen("qwertyuiop") => 0xa
[Pass] strlen("") => 0x0
[Pass] strcpy(msg, "hi there") => 0x21a324
[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) => 0x21a300
[Pass] foo => 'asdfghuiop'
[Pass] memset(bar, '*', 5) => 0x21a2e0
[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) => 0xe09800ee
[Pass] test_task_created => 0x1
[Pass] get_current_task_name() => 'run_test'
[Pass] get_task_name_from_id(current_task->taskId) => 'run_test'
[Pass] task_max => 0x84
[Pass] task_max => 0x84
[Pass] mq = mq ? mq : (void*)msg_queue_create("test", 5) => 0xe09a00c8
[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) => 0xe09c026e
[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) => 0xe09e00c6
[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
=========================================================
Test complete, 12814 passed, 8 failed.
.
Stack focusing is working well.. I trialed it a few times. I will get and and shoot with this version tomorrow and see if anything comes of it and report back.