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
Last revisionBoth sides next revision
digic8:registers [2022/02/20 14:53] – [LV peaking (Highlights / zebra)] kitordigic8:registers [2022/02/20 17:04] – [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.
  
-HDMI registers don't work as for nowThreshold/color registers accepts values as expected. Enable/disable is ignored.+===Note on HDMI registers=== 
 +Directly poking HDMI enable doesn't work. There's something running in DryOS that constantly overwrites this register with value saved in runtime.
  
-When observed in Play menu (with stock overexpo warning enabled), enable register changes as expectedSo there's a piece of puzzle still missing.+On R180.739 I was able to follow xrefs to that register, and found a function that writes them - on R180.739 source value is stored in ''b054''. If you apply the rules but write value to ''b054'' instead of register - it will get updated and zebras displayed on HDMI.
  
-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. +
- +
-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.+
  
 ===Enable register=== ===Enable register===
Line 65: Line 52:
  
 Value written should be masked ''0x100'' 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 81: Line 70:
 Value written should be masked ''0xB137FFFF'' 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                  |
Line 89: Line 78:
 | 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.txt · Last modified: 2022/02/21 23:03 by kitor