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:43] – [LV peaking (Highlights / zebra)] kitordigic8:registers [2022/02/21 23:03] (current) – [LV peaking (Highlights / zebra)] kitor
Line 27: Line 27:
  
 ^ Address        ^ Output  ^ Type      ^ Controls what?      ^ ^ Address        ^ Output  ^ Type      ^ Controls what?      ^
-| ''0xD0300520'' | HDMI    | overexpo  | enable / disable    | +| ''0xD0300520'' | HDMI    | zebra     | enable / disable    |
-| ''0xD0300550'' | HDMI    | underexpo | enable / disable    |+
 | ''0xD0300750'' | HDMI    | overexpo  | threshold and style | | ''0xD0300750'' | HDMI    | overexpo  | threshold and style |
 | ''0xD0300754'' | HDMI    | overexpo  | color               | | ''0xD0300754'' | HDMI    | overexpo  | color               |
 | ''0xD0300758'' | HDMI    | underexpo | threshold and style | | ''0xD0300758'' | HDMI    | underexpo | threshold and style |
 | ''0xD030075C'' | HDMI    | underexpo | color               | | ''0xD030075C'' | HDMI    | underexpo | color               |
-| ''0xD0304220'' | LCD/EVF | overexpo  | enable / disable    | +| ''0xD0304220'' | LCD/EVF | zebra     | enable / disable    |
-| ''0xD0304250'' | LCD/EVF | underexpo | enable / disable    |+
 | ''0xD0304488'' | LCD/EVF | overexpo  | threshold and style | | ''0xD0304488'' | LCD/EVF | overexpo  | threshold and style |
 | ''0xD030448C'' | LCD/EVF | overexpo  | color               | | ''0xD030448C'' | LCD/EVF | overexpo  | color               |
Line 42: Line 40:
 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!__
- +
-^ Output  ^ Reg       ^ Addresses                 ^ Range   ^ +
-HDMI(?) | Enable    | ''0xD0300520 + 0x30 * n'' | n∈(0-7) | +
-HDMI(?) | Threshold | ''0xD0300750 + 0x8  * n'' | n∈(0-5) | +
-| HDMI(?) | Color     | ''0xD0300754 + 0x8  * n'' | n∈(0-5) | +
-| LCD(? | Enable    | ''0xD0304220 + 0x30 * n'' | n∈(0-7) | +
-| LCD(? | Threshold | ''0xD0304488 + 0x8  * n'' | n∈(0-5) | +
-| LCD(? | Color     | ''0xD030448C + 0x8  * n'' | n∈(0-5) |+
  
-For ''n > 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.
  
-For ''n > 1'' Threshold registers accept both thresholds at the same time, but since those have no observed effects on displayed image - meaning is unknown.+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 62: 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 77: 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''
  
- +^ 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.1645360988.txt.gz · Last modified: 2022/02/20 13:43 by kitor