User Tools

Site Tools


digic8:registers

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
digic8:registers [2022/02/20 11:42] kitordigic8:registers [2022/02/21 23:03] (current) – [LV peaking (Highlights / zebra)] kitor
Line 26: Line 26:
 ==== LV peaking (Highlights / zebra) ==== ==== LV peaking (Highlights / zebra) ====
  
-^ Address        ^ Description                           +^ Address        ^ Output  Type      ^ Controls what?      ^ 
-| ''0xD0304220'' | LCD/EVF highlight enable register     | +| ''0xD0300520'' | HDMI    | zebra     | enable / disable    | 
-| ''0xD0304488'' | LCD/EVF highlight threshold register  | +| ''0xD0300750'' | HDMI    | overexpo  | threshold and style | 
-| ''0xD030448C'' | LCD/EVF highlight color register      +| ''0xD0300754'' | HDMI    | overexpo  | color               | 
-| ''0xD0300520''HDMI highlight enable register        | +| ''0xD0300758'' | HDMI    | underexpo | threshold and style | 
-''0xD0300750'' | HDMI highlight threshold register     +| ''0xD030075C'' | HDMI    | underexpo | color               | 
-| ''0xD0300754''HDMI highlight color register         |+| ''0xD0304220'' | LCD/EVF | zebra     | enable / disable    
 +| ''0xD0304488'' | LCD/EVF | overexpo  | threshold and style 
 +| ''0xD030448C'' | LCD/EVF | overexpo color               
 +| ''0xD0304490''LCD/EVF underexpo | threshold and style 
 +| ''0xD0304494''LCD/EVF | underexpo | color               |
  
 Registers used by ''DispVram'' State object to control overexposure highlighting feature. Registers used by ''DispVram'' State object to control overexposure highlighting feature.
  
-Not tested on HDMI yet (registers found via static analysis). Ability to have underexposure highlights (like on D45) is not yet confirmed.+Different addresses and slightly different values than Digic 6/7, but capabilities are very similar.
  
-__Enable register__+__It is possible to have independent zebras configured on LCD and HDMI while running in Clean HDMI mode!__
  
-''reg & 0x100'' controls if highlight is enabled or notValue written should be masked with one read from ''reg + 0x2000''+===Note on directly writing the registers=== 
 +Directly writing some registers doesn't work (values are overridden)On R170.739 that happens for HDMI enable register, but this seems to differ from model to model. See [[digic6:registers|DIGIC 6 Register Map:]] for more info.
  
-__Threshold register__+TL;DR is that you need to find (via xrefs / static code analysis) where reg value is stored, and update that memory address instead.
  
-''AABB??DD'', where: +===Enable register===
-  * AA: ''0x80'' enables visibility +
-  * BB: range ''0x0 - 0x7'' controls pattern (from light dots to solid color) +
-  * DD: Highlights threshold+
  
-__Color register__+''reg & 0x100'' controls if highlight is enabled or not. 
 + 
 +Value written should be masked ''0x100'' with one read from ''reg + 0x2000'' 
 + 
 +This register lies in **Display registers** range and most likely has more meanings. 
 + 
 +===Threshold / style register=== 
 + 
 +<code> 
 +**** **** **** **** **** **** **** **** 
 +*... .... .... .... .... .... .... .... visibility (on/off) 
 +..** .... .... .... .... .... .... .... stripes move speed (0-3) 
 +.... ...* .... .... .... .... .... .... stripes angle (45 / -45 deg) 
 +.... .... ..** .... .... .... .... .... stripes style 
 +.... .... .... .*** .... .... .... .... stripes opacity 
 +.... .... .... .... **** **** .... .... threshold (underexpo) 
 +.... .... .... .... .... .... **** **** threshold (overexpo) 
 +</code> 
 + 
 +Value written should be masked ''0xB137FFFF'' with one read from ''reg + 0x2000'' 
 + 
 +^ Field        ^ Range ^ Description ^ 
 +| visibility   | 0,1   | zebra visibility (do not confuse with Enable register) 
 +| speed        | 0-3   | lines/dots are moving slower -> faster                  | 
 +| angle        | 0-1   | 0: 45 deg, 1: -45 deg                                   | 
 +| style        | 0-2   | 0: light dots, 1: thin lines, 2: thick lines            | 
 +| opacity      | 0-7   | very opaque -> solid color                              | 
 +| underexpo_th | 0-255 | Threshold on undexexpo register, ignored on overexpo    |  
 +| overexpo_th  | 0-255 | Threshold on overexpo register, ignored on underexpo    | 
 + 
 +**Note: On HDMI max threshold is 0xE8** Values above that are not displayed! 
 + 
 +===Color register===
  
 Controls color of highlight overlays. ''??YYUUVV'' format. Canon code defaults to black (''00008080'') Controls color of highlight overlays. ''??YYUUVV'' format. Canon code defaults to black (''00008080'')
 +
 +===More registers===
 +
 +Code suggests there are more registers:
 +
 +^ Output ^ Reg       ^ Addresses                 ^ Range   ^
 +| HDMI   | Enable    | ''0xD0300520 + 0x30 * n'' | n∈⟨0,7⟩ |
 +| LCD    | Enable    | ''0xD0304220 + 0x30 * n'' | n∈⟨0,7⟩ |
 +| HDMI   | Threshold | ''0xD0300750 + 0x8  * m'' | m∈⟨0,5⟩ |
 +| HDMI   | Color     | ''0xD0300754 + 0x8  * m'' | m∈⟨0,5⟩ |
 +| LCD    | Threshold | ''0xD0304488 + 0x8  * m'' | m∈⟨0,5⟩ |
 +| LCD    | Color     | ''0xD030448C + 0x8  * m'' | m∈⟨0,5⟩ |
 +
 +n values above 0 and m values above 1 are not understood. There's no visible difference on screen.
 +
 +For ''m > 1'' Threshold registers accept both under and overexposure thresholds at the same time, but since those have no visible effects on displayed image - meaning is unknown.
 +
 +Guess: maybe ''m > 1'' are in use for 10 bit / HDR mode?
 ==== Audio ==== ==== Audio ====
  
digic8/registers.1645353769.txt.gz · Last modified: 2022/02/20 11:42 by kitor