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 12:15] – [LV peaking (Highlights / zebra)] 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. 
 + 
 +__It is possible to have independent zebras configured on LCD and HDMI while running in Clean HDMI mode!__ 
 + 
 +===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. 
 + 
 +TL;DR is that you need to find (via xrefs / static code analysiswhere reg value is stored, and update that memory address instead.
  
 ===Enable register=== ===Enable register===
Line 42: Line 53:
 ''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===+This register lies in **Display registers** range and most likely has more meanings. 
 + 
 +===Threshold / style register===
  
 <code> <code>
Line 53: Line 66:
 .... .... ..** .... .... .... .... .... 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    | 
 + 
 +**Note: On HDMI max threshold is 0xE8** Values above that are not displayed!
  
 ===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.1645355753.txt.gz · Last modified: 2022/02/20 12:15 by kitor