Line 76:
Line 76:
== Version history ==
== Version history ==
−
There are '''13''' known normal versions (along with '''9''' [[#vWii note|matching vWii versions]]) of the DI driver found in various [[IOS History|IOS versions]], based on the IOS versions present on NUS and those found on various game discs. These are generalized into 5 version families, based on observable behavior (this is not strictly chronological, presumably as Nintendo was working on multiple versions with the same features at the same time). It is quite likely that there are additional changes not noted here.
+
There are '''14''' known normal versions (along with '''9''' [[#vWii note|matching vWii versions]]) of the DI driver found in various [[IOS History|IOS versions]], based on the IOS versions present on NUS and those found on various game discs. These are generalized into 5 version families, based on observable behavior (this is not strictly chronological, presumably as Nintendo was working on multiple versions with the same features at the same time). It is quite likely that there are additional changes not noted here.
The DI driver includes a full set of [[:/dev/es|ES]] IoctlV wrappers, although it only uses ES_DiVerify and ES_DiVerifyWithTicketView. It also includes instructions for all [[syscalls]], even though most are not used. Both of those change across versions, even though those differences do not actually show up in practice.
The DI driver includes a full set of [[:/dev/es|ES]] IoctlV wrappers, although it only uses ES_DiVerify and ES_DiVerifyWithTicketView. It also includes instructions for all [[syscalls]], even though most are not used. Both of those change across versions, even though those differences do not actually show up in practice.
Line 210:
Line 210:
|data-sort-value="z" {{Partial|vWii}}
|data-sort-value="z" {{Partial|vWii}}
|-
|-
−
|rowspan="6" | [[#Group E|E]]
+
|rowspan="7" | [[#Group E|E]]
|data-sort-value="1227541149"| [[#Nov 24 2008 15:39:09|Nov 24 2008 15:39:09]]
|data-sort-value="1227541149"| [[#Nov 24 2008 15:39:09|Nov 24 2008 15:39:09]]
−
|rowspan="6" {{No}}
+
|rowspan="7" {{No}}
−
|rowspan="6" {{Yes}}
+
|rowspan="7" {{Yes}}
−
|rowspan="6" {{Yes}}
+
|rowspan="7" {{Yes}}
−
|rowspan="6" {{Partial}}
+
|rowspan="7" {{Partial}}
−
|rowspan="6" {{Partial}}
+
|rowspan="7" {{Partial}}
−
|rowspan="6" {{Partial}}
+
|rowspan="7" {{Partial}}
−
|rowspan="6" {{Yes}}
+
|rowspan="7" {{Yes}}
−
|rowspan="6" {{Yes}}
+
|rowspan="7" {{Yes}}
−
|rowspan="6" {{Yes}}
+
|rowspan="7" {{Yes}}
−
|rowspan="6" {{Yes}}
+
|rowspan="7" {{Yes}}
−
|rowspan="6" {{Yes}}
+
|rowspan="7" {{Yes}}
−
|rowspan="6" data-sort-value="121"| 0x79
+
|rowspan="7" data-sort-value="121"| 0x79
|data-sort-value="66"| 0x42
|data-sort-value="66"| 0x42
+
| {{No}}
+
|-
+
|data-sort-value="1239037807"| [[#Apr 6 2009 17:10:07|Apr 6 2009 17:10:07]]
+
|data-sort-value="68"| 0x44
| {{No}}
| {{No}}
|-
|-
Line 1,145:
Line 1,149:
| 139B0000
| 139B0000
| 0x7F00
| 0x7F00
+
|-
+
| Data (ES vars)
+
| 20208000
+
| 139B8000
+
| 0x140
+
|-
+
| BSS (zero'd)
+
| 20209000
+
| 139B9000
+
| 0x2BDC4
+
|-
+
| Stack
+
| 2022cdc4
+
| ?
+
| 0x8000
+
|-
+
| Protected heap
+
| 20209020
+
| ?
+
| 0x4000
+
|-
+
| Open heap
+
| 13600000
+
| ?
+
| 0x18000
+
|}
+
+
==== Apr 6 2009 17:10:07 ====
+
+
Used exclusively by [[IOS56]] v5146, which is not found on NUS (but can be found on e.g. Guitar Hero 5).
+
+
No changes to the actual driver code from the Nov 24 2008 version, but some of the ES wrapper code changed. These also cause string constants to shift, which makes byte comparisons slightly annoying. The changes:
+
+
* ES_AddTicket (20204514, Ioctlv 0x01) no longer always uses a size of 0x2a4, but will instead use 0x2a4 plus a 32-bit size at offset 0x2a8 if the byte at offset 0x1bc is nonzero.
+
* ES_GetTicketFromView (20204fc0, Ioctlvs 0x43 and 0x44) was added
+
+
{| class="wikitable"
+
! SHA-1
+
| colspan="3"| 9a915fd77389a79c7fa516e4aac4e30e4e1174ad
+
|-
+
! Thing
+
! Virtual address
+
! Physical address
+
! Size
+
|-
+
| Code (and entry point)
+
| 20200000
+
| 139B0000
+
| 0x7FB4
|-
|-
| Data (ES vars)
| Data (ES vars)
Line 1,186:
Line 1,239:
No changes to the actual driver code from the Nov 24 2008 version, but some of the ES wrapper code changed. These also cause string constants to shift, which makes byte comparisons slightly annoying. The changes:
No changes to the actual driver code from the Nov 24 2008 version, but some of the ES wrapper code changed. These also cause string constants to shift, which makes byte comparisons slightly annoying. The changes:
−
* ES_AddTicket (20204514, Ioctlv 0x01) no longer always uses a size of 0x2a4, but will instead use 0x2a4 plus a 32-bit size at offset 0x2a8 if the byte at offset 0x1bc is nonzero.
−
* ES_GetTicketFromView (20204fc0, Ioctlvs 0x43 and 0x44) was added
* Ioctlv 0x45 (20205cb8) was added
* Ioctlv 0x45 (20205cb8) was added