Line 105:
Line 105:
|}
|}
−
Note that both BIGARRAY and SMALLARRAY store the length (minus one) in the beginning and their actual size must be calculated from there. The name "ARRAY" need not indicate the actual content type; most settings store an application defined structure in them.
+
Note that both BIGARRAY and SMALLARRAY store the length (minus one) in the beginning and their actual size must be calculated from there. The name "ARRAY" need not indicate the actual content type; most settings store an [[#Application-defined structures|application defined structure]] in them.
=== Lookup table for settings ===
=== Lookup table for settings ===
Line 258:
Line 258:
| BIGARRAY
| BIGARRAY
| 0x205
| 0x205
−
| ?
+
| struct
| ?
| ?
|-
|-
Line 264:
Line 264:
| BIGARRAY
| BIGARRAY
| 0x461
| 0x461
−
| Bluetooth Addresses plus Device Names
+
| [[#BT.DINF|struct]]
| List of Wiimotes "synced" to the system
| List of Wiimotes "synced" to the system
|-
|-
Line 358:
Line 358:
| SMALLARRAY
| SMALLARRAY
| 3
| 3
−
| 0 = off, 1 = on<br/>0 = off, 1 = dim, 2 = bright
+
| [[#IPL.IDL|struct]]
| WiiConnect24 standby settings (Standby connection, Slot illumination)
| WiiConnect24 standby settings (Standby connection, Slot illumination)
|-
|-
Line 370:
Line 370:
| SMALLARRAY
| SMALLARRAY
| 0x16
| 0x16
−
| struct:<br/>UTF16BE string, max. 10 characters, zero-padded<br/>Last byte = string length of the nickname
+
| [[#IPL.NIK|struct]]
| Console Nickname
| Console Nickname
|-
|-
Line 376:
Line 376:
| SMALLARRAY
| SMALLARRAY
| 0x4A
| 0x4A
−
| struct
+
| [[#IPL.PC|struct]]
| Parental Controls
| Parental Controls
|-
|-
Line 388:
Line 388:
| BIGARRAY
| BIGARRAY
| 0x1008
| 0x1008
−
| lots
+
| struct
| "Simple Address" Contains some region info<br/>Offset 0 is a [[Country Codes|Country Code]] and offset 1 seems to be a more localized region code.
| "Simple Address" Contains some region info<br/>Offset 0 is a [[Country Codes|Country Code]] and offset 1 seems to be a more localized region code.
|-
|-
Line 496:
Line 496:
| 0 = no, 1 = yes
| 0 = no, 1 = yes
| Restrict Internet Channel
| Restrict Internet Channel
+
|}
+
+
== Application-defined structures ==
+
Most SMALLARRAY and BIGARRAY values follow an application-defined structure to store data in a structured way. The type SMALLARRAY or BIGARRAY gives no indication of what kind of data is stored, only that it may not exceed 255 or 65535 bytes in size.
+
+
=== BT.DINF ===
+
{| class="wikitable"
+
|-
+
! Offset
+
! Type
+
! Size
+
! Value
+
|-
+
| <code>0x0000</code>
+
| Word
+
| <code>0x0002</code>
+
| Array Size (minus 1); here: <code>0x0460</code> for 0x0461 bytes
+
|-
+
| <code>0x0002</code>
+
| Byte
+
| <code>0x0001</code>
+
| Number of registered Wiimotes
+
|-
+
| <code>0x0003</code>
+
| MAC Address
+
| <code>0x0006</code>
+
| Bluetooth MAC Address of registered/known Wiimote No. 1
+
|-
+
| <code>0x0009</code>
+
| ASCII String
+
| <code>0x0040</code>
+
| Zero-terminated Device Name of registered/known Wiimote No. 1
+
|-
+
| <code>0x0049</code>
+
| until
+
| <code>0x02BE</code>
+
| Repeats up to a total of 10 entries.
+
|-
+
| <code>0x02BF</code>
+
| MAC Address
+
| <code>0x0006</code>
+
| Bluetooth MAC Address of active Wiimote No. 1 (only set at runtime, when a Wiimote is actually connected)
+
|-
+
| <code>0x02C5</code>
+
| ASCII String?
+
| <code>0x0040</code>
+
| Zero-terminated Device Name of active Wiimote No. 1? Usually empty, probably doesn't matter (but reuses the same struct as registered Wiimotes)
+
|-
+
| <code>0x0305</code>
+
| until
+
| <code>0x0463</code>
+
| Repeats up to a total of 6 entries.
+
|}
+
+
=== IPL.IDL ===
+
{| class="wikitable"
+
|-
+
! Offset
+
! Type
+
! Size
+
! Value
+
|-
+
| <code>0x00</code>
+
| Byte
+
| <code>0x01</code>
+
| Array Size (minus 1); here: <code>0x01</code> for 0x02 bytes
+
|-
+
| <code>0x01</code>
+
| Byte
+
| <code>0x01</code>
+
| Standby connection (0 = off, 1 = on)
+
|-
+
| <code>0x02</code>
+
| Byte
+
| <code>0x01</code>
+
| Slot illumination (0 = off, 1 = dim, 2 = bright)
+
|}
+
+
=== IPL.NIK ===
+
{| class="wikitable"
+
|-
+
! Offset
+
! Type
+
! Size
+
! Value
+
|-
+
| <code>0x00</code>
+
| Byte
+
| <code>0x01</code>
+
| Array Size (minus 1); here: <code>0x15</code> for 0x16 bytes
+
|-
+
| <code>0x01</code>
+
| UTF16BE String
+
| <code>0x14</code>
+
| Console Nickname, max. 10 characters (padded with 0x00 at the end)
+
|-
+
| <code>0x15</code>
+
| Word
+
| <code>0x02</code>
+
| Actual string length of the Console Nickname
+
|}
+
+
=== IPL.PC ===
+
{| class="wikitable"
+
|-
+
! Offset
+
! Type
+
! Size
+
! Value
+
|-
+
| <code>0x00</code>
+
| Byte
+
| <code>0x01</code>
+
| Array Size (minus 1); here: <code>0x49</code> for 0x4A bytes
+
|-
+
| <code>0x01</code>
+
| Byte
+
| <code>0x01</code>
+
| Are parental controls enabled? (0x00 = off, 0x80 = on)
+
|-
+
| <code>0x02</code>
+
| Byte
+
| <code>0x01</code>
+
| Always 0x04? Maybe PIN length?
+
|-
+
| <code>0x03</code>
+
| Byte
+
| <code>0x01</code>
+
| Highest game rating allowed (value equals minimum age; 0x14 = 20 years/up = no restriction)
+
|-
+
| <code>0x04</code>
+
| ASCII String
+
| <code>0x04</code>
+
| PIN, not delimited by a null-terminator, exactly 4 digits
+
|-
+
| <code>0x08</code>
+
| Byte
+
| <code>0x01</code>
+
| [[#Secret Questions|Secret Question]] (in case you forget your PIN)
+
|-
+
| <code>0x09</code>
+
| UTF16BE String
+
| <code>0x40</code>
+
| Answer, max. 32 characters (padded with 0x00 at the end)
+
|-
+
| <code>0x49</code>
+
| Word
+
| <code>0x02</code>
+
| Actual string length of the Answer
+
|}
+
+
==== Secret Questions ====
+
{| class="wikitable"
+
|-
+
! Question ID
+
! Question
+
|-
+
| 0
+
| "What is your mother's maiden name?"
+
|-
+
| 1
+
| "What is your place of birth?"
+
|-
+
| 2
+
| "What is your favorite sports team?"
+
|-
+
| 3
+
| "What was your favorite birthday present?"
+
|-
+
| 4
+
| "What's your favorite movie?"
+
|-
+
| 5
+
| "If you could go anywhere, where would you go?"
|}
|}
[[Category:Wii Filesystem]]
[[Category:Wii Filesystem]]