Changes

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

edits