Hardware calibration: Difference between revisions

MarcusD (talk | contribs)
Add some more blocks
MarcusD (talk | contribs)
Update ConfigInfoBlk numbers from cfg sysmodule
 
(7 intermediate revisions by 2 users not shown)
Line 21: Line 21:
|-
|-
| 0xC
| 0xC
| 0x2?
| 0x1
| ???
| Model version (?)
|-
| 0xD
| 0x1
| CAL revision (incremented each time the CAL file is updated)
|-
|-
| 0xE
| 0xE
Line 30: 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 47: Line 57:
|-
|-
| 1
| 1
| LCD flicker (always successful)
| LCD "flicker"/contrast (always successful)
|-
|-
| 2
| 2
Line 74: Line 84:
|-
|-
| A
| A
| Power saving mode (ABL)
| Adaptive BackLight (ABL)
|-
|-
| B
| B
Line 89: Line 99:
|-
|-
| F
| F
| Power saving mode (ABL) in legacy (DSi/GBA) mode
| Adaptive BackLight (ABL) in legacy (DSi/GBA) mode
|}
|}


Line 97: 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 107: 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
|-
|-
| 0x30
| 0x30
| 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 146: 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
| ???
| ???
|-
|-
| 0x4A0
| 0x4A0
| 0x38
| 0x38
| ???
| 0x00050002
| Backlight PWM
| 0xB
| [[#BLPWM|Backlight PWM]]
|-
|-
| 0x4E0
| 0x4E0
| 0x18
| 0x18
| ???
| ???
|
| [[#Circle_pad_extra|Circle pad extra]]
| [[#Circle_pad_extra|Circle pad extra]]
|-
|-
Line 177: 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 218: 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 248: 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 260: 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 271: Line 326:
|-
|-
| 2*
| 2*
|rowspan="2"| Inline checksum
| Checksum low byte, NOT THIS[0]
| Checksum low byte, NOT THIS[0]
|-
|-
Line 280: 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 292: Line 351:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Offset
!  Offset
Description
Declaration
|-
|-
| 0x00
| 0x00
Line 358: Line 417:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Offset
!  Offset
Description
Declaration
|-
|-
| 0x00
| 0x00
Line 391: Line 450:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Offset
!  Offset
Description
Declaration
|-
|-
| 0x00
| 0x00
Line 415: 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 446: 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 485: Line 560:
| 0x132
| 0x132
| u8 YM_Driver
| u8 YM_Driver
| ??? (circle-pad or touch panel related?)
|-
|-
| 0x133
| 0x133
Line 493: Line 569:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Offset
!  Offset
Description
Declaration
|-
|-
| 0x00
| 0x00
Line 505: Line 581:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Offset
!  Offset
Description
Declaration
|-
|-
| 0x00
| 0x00
Line 517: Line 593:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Offset
!  Offset
Description
Declaration
|-
|-
| 0x00
| 0x00
Line 563: Line 639:
| 0x1E
| 0x1E
| u8 reserved[2]
| u8 reserved[2]
|}
==BLPWM==
{| class="wikitable" border="1"
!  Offset
!  Declaration
|-
| 0x00
| float coefficient[3][3]
|-
| 0x24
| u8 NumLevels
|-
| 0x25
| u8 padding
|-
| 0x26
| u16 brightnesses[7];
|-
| 0x34
| u16 BaseDivisor
|-
| 0x36
| u16 MinimumBrightnessHw
|}
|}


Line 568: Line 668:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Offset
!  Offset
Description
Declaration
|-
|-
| 0x00
| 0x00
Line 596: 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 628: Line 744:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Offset
!  Offset
Description
Declaration
|-
|-
| 0x00
| 0x00
Line 637: Line 753:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Offset
!  Offset
Description
Declaration
|-
|-
| 0x00
| 0x00
Line 661: Line 777:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Offset
!  Offset
Description
Declaration
|-
|-
| 0x00
| 0x00
Line 676: Line 792:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Offset
!  Offset
Description
Declaration
|-
|-
| 0x00
| 0x00