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
Next revisionBoth sides next revision
digic8:registers [2022/02/20 12:15] – [LV peaking (Highlights / zebra)] kitordigic8:registers [2022/02/20 16:01] – [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.+Directly poking HDMI registers doesn't work (yet). For some reason, zebra enable/disable write is ignored/overwritten. It works while enabled via ''DispVram'' state change request. 
 + 
 +On EOS R it was possible to display independently configured zebras on LCD and HDMI, while in CleanHDMI mode.
  
 ===Enable register=== ===Enable register===
Line 42: Line 48:
 ''reg & 0x100'' controls if highlight is enabled or not. ''reg & 0x100'' controls if highlight is enabled or not.
  
-Value written should be masked with one read from ''reg + 0x2000''+Value written should be masked ''0x100'' with one read from ''reg + 0x2000''
  
-===Threshold register===+===Threshold / style register===
  
 <code> <code>
Line 53: Line 59:
 .... .... ..** .... .... .... .... .... stripes style .... .... ..** .... .... .... .... .... stripes style
 .... .... .... .*** .... .... .... .... stripes opacity .... .... .... .*** .... .... .... .... stripes opacity
-.... .... .... .... **** **** .... .... unknown +.... .... .... .... **** **** .... .... threshold (underexpo) 
-.... .... .... .... .... .... **** **** threshold+.... .... .... .... .... .... **** **** threshold (overexpo)
 </code> </code>
  
-Value written should be masked with one read from ''reg + 0x2000''+Value written should be masked ''0xB137FFFF'' with one read from ''reg + 0x2000''
  
 ^ Field      ^ Range ^ Description ^ ^ Field      ^ Range ^ Description ^
-| visibility | 0,1   | zebra visibility (do not confuse with Enable register) +| visibility   | 0,1   | zebra visibility (do not confuse with Enable register) 
-| speed:     | 0-3   | lines/dots are moving slower -> faster                  | +| speed        | 0-3   | lines/dots are moving slower -> faster                  | 
-| angle      | 0-1   | 0: 45 deg, 1: -45 deg                                   | +| angle        | 0-1   | 0: 45 deg, 1: -45 deg                                   | 
-| style:     | 0-2   | 0: light dots, 1: thin lines, 2: thick lines            | +| style        | 0-2   | 0: light dots, 1: thin lines, 2: thick lines            | 
-| opacity    | 0-7   | very opaque -> solid color                              | +| opacity      | 0-7   | very opaque -> solid color                              | 
-unknown    | 0-255 | Unknownallowed by code but always overwritten with 00 |  +underexpo_th | 0-255 | Threshold on undexexpo registerignored on overexpo    |  
-threshold  | 0-255 | Threshold above which zebra will be overlaid            |+overexpo_th  | 0-255 | Threshold on overexpo register, ignored on underexpo    |
  
 ===Color register=== ===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.txt · Last modified: 2022/02/21 23:03 by kitor