Changes

2,533 bytes added ,  21:27, 13 August 2023
Update ConfigInfoBlk numbers from cfg sysmodule
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
215

edits