Line 57: |
Line 57: |
| |- | | |- |
| | 1 | | | 1 |
− | | LCD flicker (always successful) | + | | LCD "flicker"/contrast (always successful) |
| |- | | |- |
| | 2 | | | 2 |
Line 84: |
Line 84: |
| |- | | |- |
| | A | | | A |
− | | Power saving mode (ABL) | + | | Adaptive BackLight (ABL) |
| |- | | |- |
| | B | | | B |
Line 99: |
Line 99: |
| |- | | |- |
| | F | | | F |
− | | Power saving mode (ABL) in legacy (DSi/GBA) mode | + | | Adaptive BackLight (ABL) in legacy (DSi/GBA) mode |
| |} | | |} |
| | | |
Line 107: |
Line 107: |
| ! Size | | ! Size |
| ! [[Config_Savegame#Configuration_blocks|ConfigInfoBlk]] | | ! [[Config_Savegame#Configuration_blocks|ConfigInfoBlk]] |
| + | ! Since version |
| ! Description | | ! Description |
| |- | | |- |
| | 0x00 | | | 0x00 |
| | 0x10 | | | 0x10 |
− | | 00040000 | + | | 0x00040000 |
| + | | |
| | [[#Touch|Touch panel]] | | | [[#Touch|Touch panel]] |
| |- | | |- |
Line 117: |
Line 119: |
| | 0x08 | | | 0x08 |
| | ??? | | | ??? |
| + | | |
| | [[#Circle_pad|Circle pad]] | | | [[#Circle_pad|Circle pad]] |
| |- | | |- |
| | 0x20 | | | 0x20 |
| | 2* | | | 2* |
− | | 00050000 | + | | 0x00050000 |
− | | [[#Screen_flicker|Screen flicker]] | + | | |
| + | | [[#Screen_flicker|Display panel contrast]] |
| |- | | |- |
| | 0x24 | | | 0x24 |
| | 1* | | | 1* |
− | | ??? | + | | 0x00010000 |
| + | | |
| | [[#RTC|RTC]] | | | [[#RTC|RTC]] |
| |- | | |- |
| | 0x28 | | | 0x28 |
| | 1* | | | 1* |
− | | ??? | + | | 0x00030000 |
| + | | |
| | DSPRAM related | | | DSPRAM related |
| |- | | |- |
Line 137: |
Line 143: |
| | 0x8A | | | 0x8A |
| | ??? | | | ??? |
| + | | |
| | [[#Camera_position|Camera position]] | | | [[#Camera_position|Camera position]] |
| |- | | |- |
| | 0xBC | | | 0xBC |
| | 0x12 | | | 0x12 |
− | | ??? | + | | 0x00040002 |
| + | | |
| | [[#Gyro|Gyroscope]] | | | [[#Gyro|Gyroscope]] |
| |- | | |- |
| | 0xD0 | | | 0xD0 |
| | 0xC | | | 0xC |
− | | ??? | + | | 0x00040003 |
| + | | |
| | [[#Accel|Accelerometer]] | | | [[#Accel|Accelerometer]] |
| |- | | |- |
| | 0xE0 | | | 0xE0 |
| | 0x134 | | | 0x134 |
| + | | 0x00020000 |
| | ??? | | | ??? |
| | [[#CDC|Codec]] | | | [[#CDC|Codec]] |
Line 156: |
Line 166: |
| | 0x218 | | | 0x218 |
| | 0x06 | | | 0x06 |
− | | ??? | + | | 0x00050007 |
| + | | 0x10 |
| | [[#PIT|Programmable Infrared Transmitter (PIT)]] | | | [[#PIT|Programmable Infrared Transmitter (PIT)]] |
| |- | | |- |
| | 0x220 | | | 0x220 |
| | 0x214 | | | 0x214 |
− | | ??? | + | | 0x00070000 |
| + | | 0x7 |
| | [[#3D_filters|3D filters]] | | | [[#3D_filters|3D filters]] |
| |- | | |- |
| | 0x440 | | | 0x440 |
| | 0x20 | | | 0x20 |
− | | ??? | + | | 0x00050003 |
− | | [[#ABL|Power saving mode]] | + | | 0x8 |
| + | | [[#ABL|Adaptive BackLight / Power saving mode]] |
| |- | | |- |
| | 0x470 | | | 0x470 |
| | 0x20 | | | 0x20 |
− | | ??? | + | | 0x00050005 |
| + | | 0xA |
| | ??? | | | ??? |
| |- | | |- |
Line 177: |
Line 191: |
| | 0x38 | | | 0x38 |
| | 0x00050002 | | | 0x00050002 |
| + | | 0xB |
| | [[#BLPWM|Backlight PWM]] | | | [[#BLPWM|Backlight PWM]] |
| |- | | |- |
Line 182: |
Line 197: |
| | 0x18 | | | 0x18 |
| | ??? | | | ??? |
| + | | |
| | [[#Circle_pad_extra|Circle pad extra]] | | | [[#Circle_pad_extra|Circle pad extra]] |
| |- | | |- |
Line 187: |
Line 203: |
| | 0xC | | | 0xC |
| | ??? | | | ??? |
| + | | |
| | ??? | | | ??? |
| |- | | |- |
| | 0x510 | | | 0x510 |
| | 0x20 | | | 0x20 |
− | | ??? | + | | 0x00050004 |
| + | | 0x8 |
| | ??? | | | ??? |
| |- | | |- |
| | 0x540 | | | 0x540 |
| | 0x08 | | | 0x08 |
− | | ??? | + | | 0x00120000 |
| + | | 0x7 |
| | [[#MCU|MCU]] | | | [[#MCU|MCU]] |
| |- | | |- |
| | 0x550 | | | 0x550 |
| | 0x02 | | | 0x02 |
− | | ??? | + | | 0x00050006 |
| + | | 0x9 |
| | [[#ULCD_delay|3D screen (ULCD) delay]] | | | [[#ULCD_delay|3D screen (ULCD) delay]] |
| |- | | |- |
| | 0x560 | | | 0x560 |
| | 0x08 | | | 0x08 |
− | | ??? | + | | 0x00070002 |
| + | | 0xD |
| | [[#Microphone_echo_cancel|Microphone echo cancellation]] | | | [[#Microphone_echo_cancel|Microphone echo cancellation]] |
| |- | | |- |
| | 0x570 | | | 0x570 |
| | 0x10C | | | 0x10C |
− | | ??? | + | | 0x00050008 |
| + | | 0xF |
| | [[#ABL_extra|Power saving mode (ABL) extra]] | | | [[#ABL_extra|Power saving mode (ABL) extra]] |
| |- | | |- |
| | 0x680 | | | 0x680 |
| | 0x08 | | | 0x08 |
− | | ??? | + | | 0x00040004 |
| + | | 0xF |
| | [[#CStick|CStick (Right stick)]] | | | [[#CStick|CStick (Right stick)]] |
| |- | | |- |
| | 0x690 | | | 0x690 |
| | 0x18 | | | 0x18 |
− | | ??? | + | | 0x00180001 |
| + | | 0x12 |
| | [[#QTM|Quad Tracking Module (QTM)]] | | | [[#QTM|Quad Tracking Module (QTM)]] |
| |} | | |} |
Line 228: |
Line 252: |
| | | |
| ==Touch== | | ==Touch== |
| + | Used for mapping touch ADC values to display pixel co-ordinates. |
| + | |
| + | <code> |
| + | [4096, 4096] --> [320, 240] |
| + | |
| + | [RawX, RawY] --> [PointX, PointY] |
| + | </code> |
| + | |
| + | Usually [PointX0, PointY0] is placed around 25% from the top-left corner, and the same for [PointX1, PointY1] except 25% from the bottom-right corner. |
| + | This offsetting is needed because the touch film starts to distort outside of that rectangle, which would skew the touch results near the center of the screen. |
| + | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 258: |
Line 293: |
| | | |
| ==Circle pad== | | ==Circle pad== |
| + | |
| + | Contains the centering position of the circle pad. For other circle pad settings, see [[#Circle_pad_extra|circle pad extra]]. |
| + | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
| + | ! Declaration |
| ! Description | | ! Description |
| |- | | |- |
| | 0x00 | | | 0x00 |
| | s16 CenterX | | | s16 CenterX |
| + | |rowspan="2"| Raw analog values corresponding to zero input position |
| |- | | |- |
| | 0x02 | | | 0x02 |
Line 270: |
Line 310: |
| | | |
| ==Screen flicker== | | ==Screen flicker== |
| + | |
| + | These values are written to MCU register 0x03 and 0x04 respectively. They both set the display contrast voltage. |
| + | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
| + | ! Declaration |
| ! Description | | ! Description |
| |- | | |- |
| | 0 | | | 0 |
| | u8 FlickerTop | | | u8 FlickerTop |
| + | |rowspan="2"| Contrast voltage |
| |- | | |- |
| | 1 | | | 1 |
Line 281: |
Line 326: |
| |- | | |- |
| | 2* | | | 2* |
| + | |rowspan="2"| Inline checksum |
| | Checksum low byte, NOT THIS[0] | | | Checksum low byte, NOT THIS[0] |
| |- | | |- |
Line 290: |
Line 336: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
| + | ! Declaration |
| ! Description | | ! Description |
| |- | | |- |
| | 0 | | | 0 |
− | | u8 CompensationValue (???) | + | | u8 CompensationValue |
| + | | (???) |
| |- | | |- |
| | 1* | | | 1* |
| + | | |
| | Checksum byte, NOT THIS[0] | | | Checksum byte, NOT THIS[0] |
| |} | | |} |
Line 302: |
Line 351: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 368: |
Line 417: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 401: |
Line 450: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 425: |
Line 474: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
| + | ! Declaration |
| ! Description | | ! Description |
| |- | | |- |
| | 0x00 | | | 0x00 |
| | u8 DriverGainHP | | | u8 DriverGainHP |
| + | | Headphone gain |
| |- | | |- |
| | 0x01 | | | 0x01 |
| | u8 DriverGainSP | | | u8 DriverGainSP |
| + | | Speaker gain |
| |- | | |- |
| | 0x02 | | | 0x02 |
| | u8 AnalogVolumeHP | | | u8 AnalogVolumeHP |
| + | | |
| |- | | |- |
| | 0x03 | | | 0x03 |
| | u8 AnalogVolumeSP | | | u8 AnalogVolumeSP |
| + | | |
| |- | | |- |
| | 0x04 | | | 0x04 |
| | s8 ShutterVolume[2] | | | s8 ShutterVolume[2] |
| + | | |
| |- | | |- |
| | 0x06 | | | 0x06 |
| | u8 MicrophoneBias | | | u8 MicrophoneBias |
| + | | Capacitive microphone bias voltage |
| |- | | |- |
| | 0x07 | | | 0x07 |
− | | u8 QuickCharge (???) | + | | u8 QuickCharge |
| + | | (???) |
| |- | | |- |
| | 0x08 | | | 0x08 |
− | | u8 PGA_GAIN (microphone gain) | + | | u8 PGA_GAIN |
| + | | ??? (microphone gain) |
| |- | | |- |
| | 0x09 | | | 0x09 |
Line 456: |
Line 514: |
| | 0x0C | | | 0x0C |
| | s16 FilterHP32[3*5] | | | s16 FilterHP32[3*5] |
| + | | Headphone filter for 32728.49Hz sampling rate |
| |- | | |- |
| | 0x2A | | | 0x2A |
| | s16 FilterHP47[3*5] | | | s16 FilterHP47[3*5] |
| + | | Headphone filter for 47605Hz sampling rate |
| |- | | |- |
| | 0x48 | | | 0x48 |
| | s16 FilterSP32[3*5] | | | s16 FilterSP32[3*5] |
| + | | Speaker filter for 32728.49Hz sampling rate |
| |- | | |- |
| | 0x66 | | | 0x66 |
| | s16 FilterSP47[3*5] | | | s16 FilterSP47[3*5] |
| + | | Speaker filter for 47605Hz sampling rate |
| |- | | |- |
| | 0x84 | | | 0x84 |
| | s16 FilterMic32[(1+2)+((1+4)*5)] | | | s16 FilterMic32[(1+2)+((1+4)*5)] |
| + | | Microphone filter for 32728.49Hz sampling rate |
| |- | | |- |
| | 0xBC | | | 0xBC |
| | s16 FilterMic47[(1+2)+((1+4)*5)] | | | s16 FilterMic47[(1+2)+((1+4)*5)] |
| + | | Microphone filter for 47605Hz sampling rate |
| |- | | |- |
| | 0xF4 | | | 0xF4 |
| | s16 FilterFree[(1+2)+((1+4)*5)] | | | s16 FilterFree[(1+2)+((1+4)*5)] |
| + | | Unknown |
| |- | | |- |
| | 0x12C | | | 0x12C |
Line 495: |
Line 560: |
| | 0x132 | | | 0x132 |
| | u8 YM_Driver | | | u8 YM_Driver |
| + | | ??? (circle-pad or touch panel related?) |
| |- | | |- |
| | 0x133 | | | 0x133 |
Line 503: |
Line 569: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 515: |
Line 581: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 527: |
Line 593: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 578: |
Line 644: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 602: |
Line 668: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 630: |
Line 696: |
| | | |
| ==MCU== | | ==MCU== |
| + | |
| + | Somewhat misleading, these values are actually used for clamping the MCU's raw slider readings to comprehensible values. |
| + | |
| + | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
| + | ! Declaration |
| ! Description | | ! Description |
| |- | | |- |
| | 0x00 | | | 0x00 |
− | | s16 SVR2_Min (???) | + | | s16 SVR2_Min |
| + | | Raw 3D volume slider values <= this map to 3D slider value 0.0 |
| |- | | |- |
| | 0x02 | | | 0x02 |
− | | s16 SVR2_Max (???) | + | | s16 SVR2_Max |
| + | | Raw 3D volume slider values >= this map to 3D slider value 1.0 |
| |- | | |- |
| | 0x04 | | | 0x04 |
| | s16 VolumeSliderMin | | | s16 VolumeSliderMin |
| + | | Written to MCU reg 0x58. Volume slider values <= this map to volume value 0x00 |
| |- | | |- |
| | 0x06 | | | 0x06 |
| | s16 VolumeSliderMax | | | s16 VolumeSliderMax |
| + | | Written to MCU reg 0x59. Volume slider values >= this map to volume value 0x3F |
| |} | | |} |
| | | |
| ==ULCD delay== | | ==ULCD delay== |
| + | |
| + | There is a delay between switching the parallax barrier, and adjusting the backlight. |
| + | These delay values determine how many VBlank events to wait on before switching the backlight curves to the appropriate mode. |
| + | |
| + | This is needed only to prevent epillepsy from analog jitter causing unwanted mode switches, and both values are usually always set to 1 or 2. |
| + | |
| + | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 662: |
Line 744: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 671: |
Line 753: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 695: |
Line 777: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 710: |
Line 792: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |