Hardware calibration: Difference between revisions
Added Backlight PWM |
Update ConfigInfoBlk numbers from cfg sysmodule |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 26: | Line 26: | ||
| 0xD | | 0xD | ||
| 0x1 | | 0x1 | ||
| | | CAL revision (incremented each time the CAL file is updated) | ||
|- | |- | ||
| 0xE | | 0xE | ||
Line 34: | Line 34: | ||
| 0x10 | | 0x10 | ||
| 0x20 | | 0x20 | ||
| | | Signature of the data section. | ||
HMACSHA256 is used always except in the below cases where SHA256 is used: | |||
- devunits | |||
- PARTNER-DEBUGGER | |||
- PARTNER-CAPTURE | |||
- the SNAKE counterparts of the above | |||
- SNAKE-IS-DEBUGGER | |||
|- | |- | ||
| 0x30 | | 0x30 | ||
Line 51: | Line 57: | ||
|- | |- | ||
| 1 | | 1 | ||
| LCD flicker (always successful) | | LCD "flicker"/contrast (always successful) | ||
|- | |- | ||
| 2 | | 2 | ||
Line 78: | Line 84: | ||
|- | |- | ||
| A | | A | ||
| | | Adaptive BackLight (ABL) | ||
|- | |- | ||
| B | | B | ||
Line 93: | Line 99: | ||
|- | |- | ||
| F | | F | ||
| | | Adaptive BackLight (ABL) in legacy (DSi/GBA) mode | ||
|} | |} | ||
Line 101: | Line 107: | ||
! Size | ! Size | ||
! [[Config_Savegame#Configuration_blocks|ConfigInfoBlk]] | ! [[Config_Savegame#Configuration_blocks|ConfigInfoBlk]] | ||
! Since version | |||
! Description | ! Description | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
| 0x10 | | 0x10 | ||
| | | 0x00040000 | ||
| | |||
| [[#Touch|Touch panel]] | | [[#Touch|Touch panel]] | ||
|- | |- | ||
Line 111: | Line 119: | ||
| 0x08 | | 0x08 | ||
| ??? | | ??? | ||
| | |||
| [[#Circle_pad|Circle pad]] | | [[#Circle_pad|Circle pad]] | ||
|- | |- | ||
| 0x20 | | 0x20 | ||
| 2* | | 2* | ||
| | | 0x00050000 | ||
| [[#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 131: | 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 150: | 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 171: | Line 191: | ||
| 0x38 | | 0x38 | ||
| 0x00050002 | | 0x00050002 | ||
| 0xB | |||
| [[#BLPWM|Backlight PWM]] | | [[#BLPWM|Backlight PWM]] | ||
|- | |- | ||
Line 176: | Line 197: | ||
| 0x18 | | 0x18 | ||
| ??? | | ??? | ||
| | |||
| [[#Circle_pad_extra|Circle pad extra]] | | [[#Circle_pad_extra|Circle pad extra]] | ||
|- | |- | ||
Line 181: | 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 222: | 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 | ||
! | ! Declaration | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
Line 252: | 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 264: | 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 275: | Line 326: | ||
|- | |- | ||
| 2* | | 2* | ||
|rowspan="2"| Inline checksum | |||
| Checksum low byte, NOT THIS[0] | | Checksum low byte, NOT THIS[0] | ||
|- | |- | ||
Line 284: | 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 296: | Line 351: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Offset | ! Offset | ||
! | ! Declaration | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
Line 362: | Line 417: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Offset | ! Offset | ||
! | ! Declaration | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
Line 395: | Line 450: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Offset | ! Offset | ||
! | ! Declaration | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
Line 419: | 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 450: | 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 489: | Line 560: | ||
| 0x132 | | 0x132 | ||
| u8 YM_Driver | | u8 YM_Driver | ||
| ??? (circle-pad or touch panel related?) | |||
|- | |- | ||
| 0x133 | | 0x133 | ||
Line 497: | Line 569: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Offset | ! Offset | ||
! | ! Declaration | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
Line 509: | Line 581: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Offset | ! Offset | ||
! | ! Declaration | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
Line 521: | Line 593: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Offset | ! Offset | ||
! | ! Declaration | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
Line 572: | Line 644: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Offset | ! Offset | ||
! | ! Declaration | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
Line 596: | Line 668: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Offset | ! Offset | ||
! | ! Declaration | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
Line 624: | 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 | ||
! | ! Declaration | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
Line 656: | Line 744: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Offset | ! Offset | ||
! | ! Declaration | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
Line 665: | Line 753: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Offset | ! Offset | ||
! | ! Declaration | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
Line 689: | Line 777: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Offset | ! Offset | ||
! | ! Declaration | ||
|- | |- | ||
| 0x00 | | 0x00 | ||
Line 704: | Line 792: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Offset | ! Offset | ||
! | ! Declaration | ||
|- | |- | ||
| 0x00 | | 0x00 |