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 13:35] – [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        ^ Output  ^ Type      ^ Controls what?              ^ +^ Address        ^ Output  ^ Type      ^ Controls what?      
-| ''0xD0304220'' | LCD/EVF | overexpo  | enable / disable    | +| ''0xD0300520'' | HDMI    | zebra     | enable / disable    |
-| ''0xD0304488'' | LCD/EVF | overexpo  | threshold and style | +
-| ''0xD030448C'' | LCD/EVF | overexpo  | color               | +
-| ''0xD0304250'' | LCD/EVF | underexpo | enable register     | +
-| ''0xD0304488'' | LCD/EVF | underexpo | threshold and style | +
-| ''0xD030448C'' | LCD/EVF | underexpo | color               | +
-| ''0xD0300520'' | HDMI    | overexpo  | enable / disable    |+
 | ''0xD0300750'' | HDMI    | overexpo  | threshold and style | | ''0xD0300750'' | HDMI    | overexpo  | threshold and style |
 | ''0xD0300754'' | HDMI    | overexpo  | color               | | ''0xD0300754'' | HDMI    | overexpo  | color               |
-| ''0xD0300550'' | HDMI    | underexpo | enable / disable    | +| ''0xD0300758'' | HDMI    | underexpo | threshold and style | 
-| ''0xD0300750''HDMI    | underexpo | threshold and style | +| ''0xD030075C'' | HDMI    | underexpo | color               | 
-| ''0xD0300754''HDMI    | underexpo | color               |+| ''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.
  
-Code suggests there are more registers: +__It is possible to have independent zebras configured on LCD and HDMI while running in Clean HDMI mode!__
-  * LCD(?) Over/underexpo enable: ''0xD0304220 + 0x30 * n'', n∈(0-7) +
-  * LCD(?) Threshold + color: ''0xD0304488 + 0x8 * n'', n∈(0-5) +
-  * HDMI(?) Over/underexpo enable: ''0xD0304220 + 0x30 * n'', n∈(0-7) +
-  * HDMI(?) Threshold + color: ''0xD0304488 + 0x8 * n'', n∈(0-5)+
  
-For 'n' higher than 1 there's no visible difference.+===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 analysis) where reg value is stored, and update that memory address instead.
  
 ===Enable register=== ===Enable register===
Line 56: 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'' 
 + 
 +This register lies in **Display registers** range and most likely has more meanings.
  
 ===Threshold / style register=== ===Threshold / style register===
Line 71: Line 70:
 </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''
  
-For ''n > 1'' registers accept both thresholds at the same time, but since those have no observed effects on displayed image - meaning is unknown. +^ 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                              |
 | underexpo_th | 0-255 | Threshold on undexexpo register, ignored on overexpo    |  | underexpo_th | 0-255 | Threshold on undexexpo register, ignored on overexpo    | 
 | overexpo_th  | 0-255 | Threshold on overexpo register, ignored on underexpo    | | 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.1645360516.txt.gz · Last modified: 2022/02/20 13:35 by kitor