Fandom

Magic Lantern Firmware Wiki

2.0.4 LiveViewMgr struct = 0x29D8 bytes

328pages on
this wiki
Add New Page
Talk0 Share

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 PointerEdit

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)
Edit

[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

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Also on Fandom

Random Wiki