Line 322: |
Line 322: |
| | ? | | | ? |
| |- | | |- |
− | | 4 | + | | 5-4 |
− | | Unused? | + | | Framebuffer scanline output mode (interlace config) |
− | |-
| + | |
− | | 5
| + | 0 - A (output image as normal) |
− | | Interlacing enable (interleaves framebuffers A and B; used by top screen in 3D mode)
| + | 1 - AA (output a single line twice, aka framebuffer A is interlaced with itself) |
| + | 2 - AB (interlace framebuffer A and framebuffer B) |
| + | 3 - BA (same as above, but the line from framebuffer B is outputted first) |
| + | |
| + | 0 is used by bottom screen at all times. |
| + | 1 is used by the top screen in 2D mode. |
| + | 2 is used by top screen in 3D mode. |
| + | 3 goes unused in userland. |
| |- | | |- |
| | 6 | | | 6 |
− | | Line doubling enable (used by top screen in 2D mode) | + | | Scan doubling enable* (used by top screen) |
| |- | | |- |
| | 7 | | | 7 |
Line 340: |
Line 347: |
| | Unused? | | | Unused? |
| |} | | |} |
| + | |
| + | * The weird thing about scan doubling, is that it works different between the bottom and top LCD. On the bottom LCD, it doubles the number of outputted pixels (so the same pixel is outputted twice, effectively doing column doubling). However on the top screen, it does scanline doubling instead. Considering that the bottom screen's table doesn't work on the top screen, this could give a hint as to how the top screen receives the pixel data from the PDC. |
| + | |
| | | |
| GSP module only allows the LCD stereoscopy to be enabled when bit5=1 and bit6=0 here. When GSP module updates this register, GSP module will automatically disable the stereoscopy if those bits are not set for enabling stereoscopy. | | GSP module only allows the LCD stereoscopy to be enabled when bit5=1 and bit6=0 here. When GSP module updates this register, GSP module will automatically disable the stereoscopy if those bits are not set for enabling stereoscopy. |
| | | |
| | | |
− | When both interlacing and line doubling are disabled, the full resolution of the top screen (240x800) can be utilized if the PDC registers are updated to accomodate this higher resolution. GSP contains tables for this mode (gsp mode == 1). GSP automatically applies this mode if both bit5 and bit6 are cleared. This is also the default, and the only valid mode for the bottom screen. | + | When both interlacing and scan doubling are disabled, the full resolution of the top screen (240x800) can be utilized if the PDC registers are updated to accomodate this higher resolution. GSP contains tables for this mode (gsp mode == 1). GSP automatically applies this mode if both bit5 and bit6 are cleared. This is also the default, and the only valid mode for the bottom screen in userland. |
| | | |
− | If only interlacing is enabled, gsp detects this as a request to switch to 3D mode (gsp mode == 2), and enables the parallax barrier. | + | If only AB interlacing is enabled, gsp detects this as a request to switch to 3D mode (gsp mode == 2), and enables the parallax barrier. |
| It's unknown how to control this, but some other PDC registers control if interlacing should be done by true interleaving (both framebuffers are treated as 240x400), or skipping lines (both framebuffers are treated as 240x800) | | It's unknown how to control this, but some other PDC registers control if interlacing should be done by true interleaving (both framebuffers are treated as 240x400), or skipping lines (both framebuffers are treated as 240x800) |
| | | |
− | If only line doubling is enabled, gsp detects it as a request to switch back to 2D mode for the top screen (gsp mode == 0). This is also the default mode for the top screen. | + | If only scan doubling is enabled, gsp detects it as a request to switch back to 2D mode for the top screen (gsp mode == 0). This is also the default mode for the top screen. |
| | | |
− | Both interlacing and line doubling can't be enabled in usermode, but it works as expected in baremetal. | + | Both interlacing and scan doubling can't be enabled in usermode, but it works as expected in baremetal. |
| | | |
| === Framebuffer color formats === | | === Framebuffer color formats === |