Changes

Jump to navigation Jump to search
102 bytes removed ,  22:32, 4 October 2017
Documented stuff and cleaned up a bit more
Line 309: Line 309:  
| s
 
| s
 
| ro
 
| ro
| Special HID status flags:
+
| Received interrupt bitmask, see register 0x18 for possible values 
  bit00: power button pressed
+
If no interrupt was received this register is 0
  bit01: power button pressed long
  −
  bit02: home button pressed
  −
  bit03: home button released
  −
  bit04: wifi slider pressed
  −
  bit05: shell got closed
  −
  bit06: shell got opened
  −
  bit07: ???, sends srv notification 0x20C
  −
  bit08: charger plugged in
  −
  bit09: charger plugged out
  −
  bit11: ???, signals an event
  −
  bit14: ???, sends srv notification 0x210
  −
  bit15: ???, sends srv notification 0x20F
  −
  bit22: volume slider position changed
  −
If nothing has changed this register is 0
   
|-
 
|-
 
| 0x14
 
| 0x14
Line 350: Line 336:  
| s
 
| s
 
| rw
 
| rw
| Interrupt mask (0=enabled,1=disabled)
+
| Interrupt mask for register 0x10 (0=enabled,1=disabled)
 +
  bit00: Power button press
 +
  bit01: Power button held (the 3DS turns off regardless after a fixed time)
 +
  bit02: HOME button press
 +
  bit03: HOME button release
 +
  bit04: WiFi switch button
 +
  bit05: Shell close
 +
  bit06: Shell open
 +
  bit07: Fatal hardware condition([[Services#Notifications|?]])
 +
  bit08: Charger removed
 +
  bit09: Charger plugged in
 +
  bit10: ??? (Power Management related?)
 
   bit11: ??? (HID related)
 
   bit11: ??? (HID related)
   bit12: Accelerometer update
+
   bit12: HID update
 +
  bit13: Battery dead(?)
 +
  bit14: ??? (Power Management related?)
 +
  bit15: ??? (Power Management related?)
 +
  bit22: Volume slider position change
 +
  bit24: ??? (???)
 +
  bit25: ??? (???)
 +
  bit26: ??? (???)
 +
  bit27: ??? (???)
 +
  bit28: ??? (???)
 +
  bit29: ??? (???)
 
   bit30: forced off my mcu sysmodule
 
   bit30: forced off my mcu sysmodule
 
   bit31: forced off my mcu sysmodule
 
   bit31: forced off my mcu sysmodule
Line 434: Line 441:  
|-
 
|-
 
| 0x29
 
| 0x29
| dynamic / s
+
| ds(0x64)
 
| ro / rw
 
| ro / rw
| Repeat register, any byte written in the first byte gets repeated indefinitely(?, needs confirmation past 0xFF). The rest of the bytes are read-only. Setting the shared byte of this register (via overflow glitches) will also work, confirming that this is a semi-dynamic register as the first byte is stored in the shared register pool, but the rest of the bytes are fake.
+
| Empty battery pattern holder, repeats all written bytes
 
|-
 
|-
 
| 0x2A
 
| 0x2A
Line 472: Line 479:  
| s
 
| s
 
| rw
 
| rw
| RTC time (system clock). 7 bytes are read from this. The upper nibble of each byte encodes 10s (BCD), so each byte is post-processed with (byte & 0xF) + (10 * (byte >> 4)). Byte 0 encodes seconds, byte 1 minutes, byte 2 hours, byte 3 is either the current day of the week or current week of month (not used by anything though), byte 4 days, byte 5 months and byte 6 years
+
| RTC time (system clock). 7 bytes are read from this. The upper nibble of each byte encodes 10s (BCD), so each byte is post-processed with (byte & 0xF) + (10 * (byte >> 4)).
 +
  byte 0: seconds
 +
  byte 1: minutes
 +
  byte 2: hours
 +
  byte 3: current day of the week (unused)
 +
  byte 4: days
 +
  byte 5: months
 +
  byte 6: years
 +
  byte 7: leap year counter (unused)
 
|-
 
|-
 
| 0x37
 
| 0x37
Line 500: Line 515:  
| s
 
| s
 
| rw
 
| rw
| ?
+
| Pedometer state (?)
 
|-
 
|-
 
| 0x41
 
| 0x41
Line 563: Line 578:  
|-
 
|-
 
| 0x4F
 
| 0x4F
| 6(?)
+
| 0x156
 
| ro
 
| ro
| Unkonwn. Reading past the 6th byte is FF-filled, so register size of 6 is assumed.
+
| ???
 
|-
 
|-
 
| 0x50
 
| 0x50
 +
| s
 +
| rw
 +
| ???
 +
|-
 +
| 0x51
 +
| s
 +
| rw
 +
| ???
 +
|-
 +
| 0x52
 
- 0x57
 
- 0x57
 
| s
 
| s
Line 595: Line 620:  
|-
 
|-
 
| 0x60
 
| 0x60
| 0x100
+
| ds(1)
 
| ro
 
| ro
 
first byte is wo
 
first byte is wo
Line 603: Line 628:  
|-
 
|-
 
| 0x61
 
| 0x61
| 0x100
+
| ds(0x100)
 
| rw
 
| rw
 
| Writing to this register pushes values on top of register 0x60's stack. Reading from this register doesn't advance the stack.
 
| Writing to this register pushes values on top of register 0x60's stack. Reading from this register doesn't advance the stack.
215

edits

Navigation menu