Line 140:
Line 140:
! Name
! Name
! Comments
! Comments
+
|-
+
| 0x00
+
| 4
+
| Pixel timer (not pixel clock)
+
| Higher values are slower, min. 0x1C1, bitmask 0xFFF
+
|-
+
| 0x04
+
| 4
+
| VScanStart(?)
+
| Values 0xD1-0x1C1 inclusive are valid (except 2DS bottom screen)
+
min. 0xD1, bitmask 0xFFF
+
|-
+
| 0x08
+
| 4
+
| ?
+
|
+
|-
+
| 0x0C
+
| 4
+
| ?
+
|
+
|-
+
| 0x10
+
| 4
+
| VAdjustGranule
+
+
or
+
HAdjust(2DS bottom screen)
+
| Finetune vertical pixel offset, 0x1C2 max = half pixel
+
+
or
+
offset the bottom screen (0 to kill 2DS top screen, 0x1C2 max on bottom screen)
+
|-
+
| 0x14
+
| 4
+
| HEndOffset(?) (poor 2DS emulation)
+
| Moves the frame left/right(after some conditions are met)
+
+
default value is 0xCF
+
|-
+
| 0x18
+
| 4
+
| ???
+
|
+
|-
+
| 0x20
+
| 4
+
| ?
+
| ??? the screen gets vertically offset with wrap-around
+
horizontal timing gets messed up
+
|-
+
| 0x24
+
| 4
+
| HSync timer?
+
|
+
|-
+
| 0x28
+
| 4
+
| VStart(?)
+
|
+
|-
+
| 0x30
+
| 4
+
| VTotal
+
| Total amount of vertical scanlines
+
|-
+
| 0x34
+
| 4
+
| VDisp
+
| Total amonut of vertical scanlines displayed
+
|-
+
| 0x44
+
| 4
+
| ???
+
| similar functionality to 0x10
+
|-
+
| 0x4C
+
| 4
+
| Overscan filler color
+
|
+
|-
+
| 0x50
+
| 4
+
| Vertical scanline counter
+
| read-only
+
|-
+
| 0x54
+
| 4
+
| Horizontal scanline counter
+
| read-only
|-
|-
| 0x5C
| 0x5C
| 4
| 4
−
| Framebuffer width & height
+
| ???
−
| Lower 16 bits: width, upper 16 bits: height
+
| low u16: framebuffer width
+
high u16: framebuffer height??? (seems to be unused)
+
|-
+
| 0x60
+
| 4
+
| ???
+
| low u16: timing data(?)
+
high u16: framebuffer total width (amount of pixels blitted regardless of framebuffer width)
+
|-
+
| 0x64
+
| 4
+
| ???
+
| low u16: unknown
+
high u16: framebuffer total height (amount of scanlines blitted regardless of framebuffer height)
|-
|-
| 0x68
| 0x68