Line 227: |
Line 227: |
| | | |
| == Device 3 == | | == Device 3 == |
| + | ro = read-only (writing is no-op) |
| + | rw = read-write |
| + | wo = write-only (reading will yield 00, FF, or unpredictable data) |
| + | s* = shared register (explaination below this table) |
| + | *v = volatile (survives reboots) |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| ! REGISTER | | ! REGISTER |
Line 319: |
Line 324: |
| | 0x15 | | | 0x15 |
| | s | | | s |
− | | rw | + | | rw v |
− | | ? (volatile;survives reboot and power off) | + | | ? |
| |- | | |- |
| | 0x16 | | | 0x16 |
| | s | | | s |
− | | rw | + | | rw v |
− | | ? (volatile;survives reboot and power off) | + | | ? |
| |- | | |- |
| | 0x17 | | | 0x17 |
| | s | | | s |
− | | rw | + | | rw v |
− | | ? (volatile;survives reboot and power off) | + | | ? |
| |- | | |- |
| | 0x18 | | | 0x18 |
Line 365: |
Line 370: |
| | 0x1C | | | 0x1C |
| | s | | | s |
− | | rw | + | | rw v |
− | | ? (volatile;survives reboot and power off) | + | | ? |
| |- | | |- |
| | 0x1D | | | 0x1D |
| | s | | | s |
− | | rw | + | | rw v |
− | | ? (volatile;survives reboot and power off) | + | | ? |
| |- | | |- |
| | 0x1E | | | 0x1E |
| | s | | | s |
− | | rw | + | | rw v |
− | | ? (volatile;survives reboot and power off) | + | | ? |
| |- | | |- |
| | 0x1F | | | 0x1F |
| | s | | | s |
− | | rw | + | | rw v |
− | | ? (volatile;survives reboot and power off) | + | | ? |
| |- | | |- |
| | 0x20 | | | 0x20 |
Line 407: |
Line 412: |
| bit2: bottom screen backlight off | | bit2: bottom screen backlight off |
| bit3: bottom screen backlight on | | bit3: bottom screen backlight on |
− | bit4: top screen backlight off (does nothing on 2DS as the backlight is bottom only) | + | bit4: top screen backlight off |
− | bit5: top screen backlight on (see above) | + | bit5: top screen backlight on |
| + | |
| + | bits 4 and 5 have no effect on a 2DS because the backlight source is the bottom screen |
| |- | | |- |
| | 0x23 | | | 0x23 |
Line 448: |
Line 455: |
| | s | | | s |
| | rw | | | rw |
− | | WiFi LED state, non-0 value turns on the WiFi LED, capped at 0x0F | + | | WiFi LED state, non-0 value turns on the WiFi LED, 4 bits wide |
| |- | | |- |
| | 0x2B | | | 0x2B |
Line 458: |
Line 465: |
| | s | | | s |
| | rw | | | rw |
− | | 3D LED state, capped at 0x0F | + | | 3D LED state, 4 bits wide |
| |- | | |- |
| | 0x2D | | | 0x2D |
Line 483: |
Line 490: |
| byte 1: minutes | | byte 1: minutes |
| byte 2: hours | | byte 2: hours |
− | byte 3: current day of the week (unused) | + | byte 3: current week (unused) |
| byte 4: days | | byte 4: days |
| byte 5: months | | byte 5: months |
| byte 6: years | | byte 6: years |
− | byte 7: leap year counter (unused) | + | byte 7: leap year counter / "watch error correction" register (unused) |
| |- | | |- |
| | 0x38 | | | 0x38 |
− | - 0x3C | + | - 0x3A |
| | s | | | s |
| | rw | | | rw |
| | RTC alarm registers | | | RTC alarm registers |
− | Register 0x3B could be used to upload [[MCU_Services#MCU_firmware_versions|MCU firmware]] if some conditions are met. | + | byte 0: minutes |
| + | byte 1: hours |
| + | byte 2: week |
| + | |- |
| + | | 0x3B |
| + | - 0x3D |
| + | | s |
| + | | rw |
| + | | Register 0x3B could be used to upload [[MCU_Services#MCU_firmware_versions|MCU firmware]] if some conditions are met. |
| |- | | |- |
| | 0x3D | | | 0x3D |
Line 505: |
Line 520: |
| | s | | | s |
| | wo | | | wo |
− | | Peripheral power related? bit0 seems to depower everything, pressing the power key afterwards instantly turns the whole 3DS off | + | | Register-mapped MCU RESET? |
| |- | | |- |
| | 0x40 | | | 0x40 |
Line 533: |
Line 548: |
| |- | | |- |
| | 0x45 | | | 0x45 |
| + | - 0x4A |
| | s | | | s |
− | | rw | + | | ro |
− | | ? | + | | Gyroscope 3D rotation from the 12bit ADC, left shifted 4 to fit in a 16bit signed short |
| + | {| class="wikitable" border="1" |
| + | ! AXIS |
| + | ! V=0x00 |
| + | ! V=0x40 |
| + | ! V=0xC0 |
| |- | | |- |
− | | 0x46 | + | | Y (=roll) |
− | | s | + | | held vertically |
− | | ro | + | | vertical right side |
− | | Gyro Y(?) axis rotation (0x00 = flat, 0x40 = 3DS standing on right side, 0xBE = 3DS standing on left side) | + | | vertical left side |
| |- | | |- |
− | | 0x48 | + | | Z? (=yaw) |
− | | s | + | | ??? |
− | | ro | + | | ??? |
− | | Gyro Z(?) axis rotation (0x00 = flat, 0x40 = 3DS standing horizontally, 0xBE = 3DS base is horizontally upside-down) | + | | ??? |
| |- | | |- |
− | | 0x4A | + | | X? (=pitch) |
− | | s | + | | held vertically |
− | | ro | + | | ??? |
− | | Gyro X(?) axis rotation (0x00 = 3DS base facing upwards, 0x40 = face-down flat, 0xBE = standing(?) flat) | + | | ??? |
| + | |} |
| |- | | |- |
| | 0x4B | | | 0x4B |
Line 596: |
Line 618: |
| | s | | | s |
| | rw | | | rw |
− | | DSP volume slider 0% volume offset (setting this to 0xFF will esentially mute the DSP as it's the volume slider's maximum raw value) | + | | Register-mapped ADC register |
| + | DSP volume slider 0% volume offset (setting this to 0xFF will esentially mute the DSP as it's the volume slider's maximum raw value) |
| |- | | |- |
| | 0x59 | | | 0x59 |
| | s | | | s |
| | rw | | | rw |
− | | DSP volume slider 100% volume offset (setting both this and the above to 0 will disable the volume slider with 100% volume, setting this to a lower value than the above will make the volume slider have only 2 states; on and off) | + | | Register-mapped ADC register |
| + | DSP volume slider 100% volume offset (setting both this and the above to 0 will disable the volume slider with 100% volume, setting this to a lower value than the above will make the volume slider have only 2 states; on and off) |
| |- | | |- |
| | 0x5A | | | 0x5A |