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 |
− | | On devunits and if 0x1FF81006 is 3 or 4 or 7 or 8 or 9 then SHA256, | + | | Signature of the data section. |
− | otherwise HMACSHA256 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 |
− | | Power saving mode (ABL) | + | | Adaptive BackLight (ABL) |
| |- | | |- |
| | B | | | B |
Line 93: |
Line 99: |
| |- | | |- |
| | F | | | F |
− | | Power saving mode (ABL) in legacy (DSi/GBA) mode | + | | 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 |
− | | 00040000 | + | | 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* |
− | | 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 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 |
− | ! Description | + | ! 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 |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 362: |
Line 417: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 395: |
Line 450: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! 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 |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 509: |
Line 581: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 521: |
Line 593: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 572: |
Line 644: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 596: |
Line 668: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! 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 |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 656: |
Line 744: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 665: |
Line 753: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 689: |
Line 777: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |
Line 704: |
Line 792: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! Offset | | ! Offset |
− | ! Description | + | ! Declaration |
| |- | | |- |
| | 0x00 | | | 0x00 |