lcd_controller
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| lcd_controller [2025/05/04 20:15] – arisotura | lcd_controller [2025/09/04 22:29] (current) – arisotura | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== LCD controller ====== | ====== LCD controller ====== | ||
| - | The gamepad provides simple | + | The gamepad provides simple display hardware |
| Register map: | Register map: | ||
| Line 13: | Line 13: | ||
| | 0xF0009418 | Horizontal end of display | | | 0xF0009418 | Horizontal end of display | | ||
| | 0xF000941C | Vertical end of display | | | 0xF000941C | Vertical end of display | | ||
| - | | 0xF0009420 | ?? video-out | + | | 0xF0009420 | Video feed X offset | |
| - | | 0xF0009424 | ?? video-out | + | | 0xF0009424 | Video feed width | |
| - | | 0xF0009428 | ?? video-out | + | | 0xF0009428 | Video feed Y offset | |
| - | | 0xF000942C | ?? video-out | + | | 0xF000942C | Video feed height | |
| | 0xF0009430 | ?? | | | 0xF0009430 | ?? | | ||
| | 0xF0009434 | ?? | | | 0xF0009434 | ?? | | ||
| Line 40: | Line 40: | ||
| | 0xF00094D0+(N*4) | YUV->RGB matrix (N=0..8) | | | 0xF00094D0+(N*4) | YUV->RGB matrix (N=0..8) | | ||
| | 0xF00094F4 | ?? | | | 0xF00094F4 | ?? | | ||
| - | | 0xF00094F8 | ?? | | + | | 0xF00094F8 | Camera sync | |
| | 0xF00094FC | Counter of sorts | | | 0xF00094FC | Counter of sorts | | ||
| | || | | || | ||
| Line 155: | Line 155: | ||
| ^ Bits ^ Desc. ^ | ^ Bits ^ Desc. ^ | ||
| | 0 | ?? breaks display | | | 0 | ?? breaks display | | ||
| - | | 1 | Must be set for display | + | | 1 | Enable |
| - | | 2 | ?? causes weird effects | + | | 2 | Enable video feed (camera/ |
| - | | 3 | ?? | | + | | 3 | Video feed input? (0=post-processed camera?, 1=raw camera? |
| - | | 4 | Must be set for display to work. Presumably general display enable. | + | | 4 | Enable overlay | |
| + | | 5 | ?? | | ||
| + | | 6 | ?? | | ||
| **0xF00094B0** | **0xF00094B0** | ||
| Line 178: | Line 180: | ||
| | 0 | 8-bit paletted | | | 0 | 8-bit paletted | | ||
| | 1 | 4-bit paletted (LSb first) | | | 1 | 4-bit paletted (LSb first) | | ||
| - | | 2 | 16-bit | + | | 2 | 16-bit |
| | 3 | 16-bit RGB565 | | | 3 | 16-bit RGB565 | | ||
| Line 186: | Line 188: | ||
| In YUV mode, the matrix at 0xF00094D0..0xF00094F0 is used to convert the YUV components to RGB. | In YUV mode, the matrix at 0xF00094D0..0xF00094F0 is used to convert the YUV components to RGB. | ||
| - | |||
| - | Bit 16-23 are related to the way the framebuffer stride is handled in pixel modes 2 and 3. | ||
| Line 220: | Line 220: | ||
| The multiplier allows to increase the final value. For example, values 0x30, 0x98, 0x10C and 0x18C are equivalent. | The multiplier allows to increase the final value. For example, values 0x30, 0x98, 0x10C and 0x18C are equivalent. | ||
| + | |||
| + | Note: YUV mode produces darker colors, even with maximum factor values. One can use the color correction registers at 0xF0009600 to compensate for this. | ||
| + | |||
| + | |||
| + | **0xF00094F8** | ||
| + | |||
| + | Camera sync. | ||
| + | |||
| + | ^ Bits ^ Desc. ^ | ||
| + | | 0-10 | Vertical position | | ||
| + | | 15 | ??? | | ||
| + | |||
| + | This register allows to synchronize camera output to the display. The camera frame IRQ fires 8 scanlines after the specified position. | ||
| + | |||
| + | This register can be disabled by setting it to a value equal to or greater than the display' | ||
lcd_controller.1746389727.txt.gz · Last modified: 2025/05/04 20:15 by arisotura
