Magic Lantern Firmware Wiki
Register
Advertisement

Parent: http://magiclantern.wikia.com/wiki/2.0.4_AJ


Related Page: 2.0.4 small LiveView struct at 0x44FC

Related: http://magiclantern.wikia.com/wiki/2.0.4_TOPLEVEL_startupPrepareDevelop_n_SDS_initialise

Live View Manager Structure Pointer[]

Navigating around a Wiki table is simply a delight (its the simple things in life ... I guess?)

DSC 6324

Live-by-wire


0x1D78 aAJ_0x1D78_LiveViewMgr_struct_ptr

This ptr (pointer) points to the 0x29D8 byte LiveViewMgr_struct

The actual LiveViewMgr_struct is malloced in AJ_LiveView_Initialise() at 0xFF835DBC



LiveViewMgr_Struct: size = 0x29D8 (that's Hex for Huge)
[]

[0x00] Struct name = address of "LiveViewMgr" = aAJ_0xFFC4A474_aLiveviewmgr_string Set in AJ_LiveView_Initialise()
[0x04] TaskCreate_ss

= 5 (if TH_task_create_2() was a success)

= 3 (ie TH_task_create_2() was passed an entry=0) = Failure << 1 - if TH_task_create2() FAILED

Set in AJ_LiveView_Initialise()
[0x08] =152 set in AJ_LiveView_Initialise()
[0x0C]

"LVState"

StateObj

= ptr to StateObject
LDR into AJ_lvEventDispatch()
R0 = [0x0C] before AJ_StateObject_stuff()
AJ to double check this
[0x34] FD_GetAfState [4, 5, 6, 7, 8] Ref AJ_FD_GetAfState() [Face Detect]
[0xA8] = 0x1 Set in AJ_LiveView_Initialise()
[0xC0]

Magnification

LVmagSubBank

0 = x1 bank of 16 subs to call < CONFIRMED >

1 = x5 bank of 16 subs to call < CONFIRMED >

2 = x10 bank of 16 subs to call < CONFIRMED >

Ref: AJ_LiveView_main(), AJ_ChangeVDInterrupt()

Nb: These subs write the addr of the 16 engio structs to [0xCD0]
Also see AJ_sub40_LiveView_main() [part of AJ_LiveView_main() ]

[0xC4]

ZoomMode

0,1,2

0 = x1 related < CONFIRMED >

1 = x5 related < CONFIRMED >

2 = x10 related < CONFIRMED >


Set to --> 0 <-- in AJ_ModeChangeToZoomOff()

AJ_TvAfMode_n_Zoom(): Used to select variable in

aAJ_0xFFC7A1E4_TvAfMode_n_Zoom_related_0x00_to_0x08

Ref: AJ_ModeChangeToZoomOff()

[0xC8] = vals[0,1,2,3,4,5,6] = parm2
AJ_get_index_of_list_of_engio_vals_from_0xFFC79064_plus_4xR1()
[0xCC]

'FrameRate' engio_struct_upd_var

maybe framerate related

[0..6]

Used to get variable at 0xFFC79064 to build an engio_write_struct in AJ_TvAfMode_n_Zoom()

Called 'FrameRate' in AJ_PROP_LV_massive()

[0xE0]

Example of values:


5F60_7800
41B0_7800
5C00_7800

[0xE8]

Example of values:


4400_0080 (seems to switch with value at 0xEC)
5000_0080 (seems to switch with value at 0xEC)

[0xEC

Example of values:

4400_0080 (seems to switch with value at 0xE8)
5000_0080 (seems to switch with value at 0xE8)

[0xF4]

Examples of values:

0x1FE0 (at x1 magnification)

0x2420 (at x5 magnification)

?0x2420? (at x10 magnification)

[0xFC]

Examples of values:

0xEF60 (at x1 magnification)

0x36B0 (at x5 magnification)

?0x36B0? (at x10 magnification)

[0x104]

Examples of values:

0x0 (at x1 magnification)

?0x? (at x5 magnification)

?0x? (at x10 magnification)

[0x110]

Copy 1 of [0x2974]

Zoom_window

Y_position

Not sure if this is the copy .. but 0x2974 is closer to 0x2970 (which is X_position)
AJ to find out later on
[0x3C4] TvAfMode?
[0x3FC] LVstate1

=0 or 1?

AJ_LiveView_StartInSuspend()

IF ( [0x3FC_LVstate1] != 0 OR
[0x3FC_LVstate1] = 0 AND [0x400_LVstate2] != 0 )

{ Illegal stop Error }


AJ_LiveView_main()

IF ( [0x3FC_LVstate1] = 1 OR
[0x3FC_LVstate1] = 0 AND [0x400_LVstate2] = 1 )

{ if [0x2930]_Bitmask1 wrong -> Illegal stop Error }

[0x400] LVstate2 =0 or 1?

AJ_LiveView_StartInSuspend()

IF ( [R4,#0x3FC] != 0 OR
[R4,#0x3FC] = 0 AND [R4,#0x400] != 0 )

{ Error }



AJ_LiveView_main()

IF ( [0x3FC_LVstate1] = 1 OR
[0x3FC_LVstate1] = 0 AND [0x400_LVstate2] = 1 )

{ if [0x2930]_Bitmask1 wrong -> Illegal stop Error }

[0x4F8]

Examples of values:

0x0 (at x1 magnification)

0x1 (at x5 magnification)

0x2 (at x10 magnification)

[0x5C4]

Examples of values: 0 -> 1 -> 0

In LiveView
[0x948] RecMovSubBank = 0, or 1

AJ_GetRecMoviePassInfo_RecModeD()

uses this to select banks of 16 subs at

aAJ_0xFFC7A444_sublist_RecMoviePassInfo_related

[0xB10] = 1 then AJ_LiveView_main() calls
AJ_liveview_zoom_struct_related()
[0xB14] Temperature
[0xB1C] 'Temp' Called 'Temp' in AJ_PROP_LV_massive()
[0xB6C]

Examples of values:

0x0 (at x1 magnification)

0x1 (at x5 magnification)

0x2 (at x10 magnification)

[0xB88] Examples of values: 9 -> 3 -> 9 -> 3 -> 2 -> 6 In LiveView
[0xB9C] Examples of values: 4 -> 6 -> 3 -> 6 -> 5 In LiveView
[0xBA0] Examples of values: 1 -> 0 -> 1 In LiveView
[0xCD0] = Address of 16 engio_write_subs to call
depending on Zoom level
cf [0xC0]
[0xD08]

Examples of values:

0x0 (at x1 magnification)

0x17_000E (at x5 magnification)

0x17_000E (at x10 magnification)

[0xD0C]

Examples of values:

0xCE0_0000 (at x1 magnification)

0xCE0_0010 (at x5 magnification)

0xCE0_0010 (at x10 magnification)

[0xD18]

Copy 2 of [0x2974]

Zoom_window

Y_position

Not sure if this is the copy .. but 0x2974 is closer to 0x2970 (which is X_position)
AJ to find out later on
[0x2140]

Examples of values:

0x0 (at x1 magnification)

0x1 (at x5 magnification)

0x2 (at x10 magnification)

[0x23E0]

Examples of values:

0x5FA1_0000


0x5CF5_5???

In LiveView
[0x23F8]

Examples of values:

0x0140_137B
0x0140_147D
0x0140_14D3

In LiveView
[0x2690]

Examples of values:


0x0140_10C8
0x0140_1176
0x0140_1222
0x0140_12D0

In LiveView

[0x2B20]


maybe 0x2920?

BadFrameRelated See AJ_lvSetBadFrame()
[0x2930]

Bitmask1?

= 0x4A1 (= 1185)


Bit(0x200) : Checked in AJ_LiveView_main(), AJ_GetResource_Res_Free_Count() Have a look at AJ_lv_debug_flag() bit 0 = Enable AE Sequence bit 1 = Enable AF Sequence bit 2 = Output AF RAW Data bit 3 = Output AE RAW Data bit 14 = Output DEFM Raw bit 15 = Output RSHD Raw bit 5 = Enable PSave ON bit 10 = Enable PSave OFF bit 4 = Enable Eshutter (Alex may be interested in this) bit 6 = Enable Magnify (AJ is interested in this!) bit 13 = Enable 30 frm save bit 8 = Change FPS

Set in AJ_LiveView_Initialise()



check AJ_LiveView_main()TST with #0x200. -> if Bit = 0 => possible error

AJ_LiveView_main()

IF ( [0x3FC_LVstate1] = 1 OR
[0x3FC_LVstate1] = 0 AND [0x400_LVstate2] = 1 )

{ if [0x2930]_Bitmask1 wrong -> Illegal stop Error }

[0x2940] =0 Set in AJ_LiveView_Initialise()
[0x2964]

Examples of values: 0xA1F->ACC->C25

[0x2970]

Zoom_window


X_position

Examples of values:

0x7►0x57►0xA7...0x10E7►0x1157►0x1187 (at x1 mag)

0x8►0x1188 (at x5 magnification)

0x120►0x12A0 (at x10 magnification)

Top Left [0x7,0x18] (x1)


Bottom Right [0x1187,0xBA0] (x1)

[0x2974]

Zoom_window

Y_position

Examples of values:

0x18►0x6A►.... 0xA06►0xBA0 (at x1 magnification)

0x14►0xB9C (at x5 magnification)

0xD0►0xC58 (at x10 magnification)

[0x110] and [0xD18] are copies of this (or this of them!).
[0x2978]

Examples of values:

0x462 (at x1 magnification)

0x460 (at x5 magnification)

0x230 (at x10 magnification)

[0x297C]

Examples of values:

0x2E8 (at x1 magnification)

0x2F0 (at x5 magnification)

0x178 (at x10 magnification)

[0x299C]

Examples of values:

0x1 (at x1 magnification)

0x4 (at x5 magnification)

0x? (at x10 magnification)

[0x29A4]

Examples of values:

0x1 (at x1 magnification)

0x? (at x5 magnification)

0x0 (at x10 magnification)

[0x29B0] Magnification_on_LCD

Examples of values:

(dec) 1 (at x1 magnification)

(dec) 5 (at x5 magnification)

(dec) 10 (at x10 magnification)

Looking at memory changing - I think this is what is displayed at the bottom right of the screen when zooming
[0x29D0]

Examples of values: 1->0->1

In LiveView
Advertisement