Line 3:
Line 3:
| type = common
| type = common
| status = active
| status = active
+
| parent = [[IOS21]]
+
| children = [[IOS22]]<br />[[IOS30]]
}}
}}
−
'''IOS28''' is the first [[IOS]] to be split into multiple modules, each its own [[ELF]] [[ARM Binaries|ARM binary]], rather than all of IOS being part of a single monolithic binary. Its [[:/dev/es|ES]] module includes ioctls that retrieve shared contents, probably for the purpose of quickly loading IOS modules. Modules are also now tagged with $IOSVersion dates once again, something that has not been seen since [[IOS10]].
+
'''IOS28''' is the first [[IOS]] to be split into multiple modules, each its own [[ELF]] [[ARM Binaries|ARM binary]], rather than all of IOS being part of a single monolithic binary. Its [[:/dev/es|ES]] module includes ioctls that retrieve shared contents, probably for the purpose of quickly loading IOS modules. Modules are also now tagged with $IOSVersion dates, since the build tag can no longer completely summarize the IOS. Older IOSes were later given module-specific $IOSVersion tags as they were updated.
−
This IOS also uses a different range of memory, so it must clear memory differently. Because [[IOS22]] and below did not do this, IOS28 also clears it if one of those IOSes is reloaded to.{{ref|https://github.com/dolphin-emu/dolphin/blob/master/Source/Core/Core/IOS/IOS.cpp}}
+
IOS28 and up also use a different IPC range, which it sets when it is loaded. Because [[IOS22]] and below do not set their IPC ranges, instead inheriting them from boot (probably [[boot2]]), IOS28 and above always reset the IPC range to the old one before reloading to a different IOS, which allows the old IOSes to have the old range while also allowing new IOSes to set their own range.{{ref|https://github.com/dolphin-emu/dolphin/blob/master/Source/Core/Core/IOS/IOS.cpp}}
This also appears to be the first IOS to support [[:/sys/disc.sys]]; this probably means Metroid Prime 3: Corruption requires special privileges.
This also appears to be the first IOS to support [[:/sys/disc.sys]]; this probably means Metroid Prime 3: Corruption requires special privileges.
+
+
IOS28 seems to have been modularized completely separately from [[IOS30]] and [[IOS31]]; because those were the IOSes that all other modular IOSes were branched from, IOS28 has a unique set of modules. IOS28's FS module was built 9 seconds later than IOS30, and DI, SDI, OH0, and OH1 were each built 3 minutes and 1 second later than in IOS30, and only seem to differ in the version reported. IOS30 has a newer IOSP from 06/25/07 instead of 06/08/07. Additionally, not all IOS28 modules have $IOSVersion tags (probably only the ones that changed since IOS22), but this was fixed in IOS30.
+
+
Since DI only differs from IOS30 in the heap location, error 001 most likely works in IOS28. The lack of it being enabled is most likely a result of it not being thoroughly tested at the time IOS28 was built.
+
+
IOSP was updated for the first time since [[IOS11]]; IOS11's IOSP was built on 10/25/2006, while IOS28's IOSP was built on 6/8/2007. While no build dates are present in older IOSes for ES, FS, and SDI, it can be assumed that they followed a similar pattern of not updating because [[3.3rev03]] had identical copies of these modules for all IOSes between IOS11 and IOS22. DI followed a similar trend, although it was also not updated between [[IOS9]] and [[IOS11]].
+
+
The [[SSL]] module in IOS28 has been given PID 16. Previously, SSL shared PID 15 with the [[Broadway]] IPC calls.
== Titles using this IOS ==
== Titles using this IOS ==
Line 16:
Line 26:
== Version history ==
== Version history ==
{{IOS version history|
{{IOS version history|
+
{{IOS version|v768|none|Unreleased; known to exist because the [[WiiConnect24]] FW user agent in v1288 is <code>WiiConnect24/FW_28.3.0</code>.}}
{{IOS version|v1288|none|Not available on NUS.}}
{{IOS version|v1288|none|Not available on NUS.}}
{{IOS version|v1292|identify}}
{{IOS version|v1292|identify}}
{{IOS version|v1293|stm}}
{{IOS version|v1293|stm}}
−
{{IOS version|v1550|stm}}
+
{{IOS version|v1550|stmioctl}}
−
{{IOS version|v1806|stm}}
+
{{IOS version|v1806|sdireg}}
−
{{IOS version|v1807|stm|Updated WL and NCD ([[4.3rev03]])}}
+
{{IOS version|v1807|sdireg|Updated WL and NCD ([[4.3rev03]])}}
−
{{IOS version|v2063|stm|Only found on [[vWii]] and newer [[RVL-101]] units.}}
+
{{IOS version|v2063|sdireg|Only found on [[vWii]] and newer [[RVL-101]] units.}}
−
{{IOS version|v27663|stm|Only found on [[Wii mini]]}}
+
{{IOS version|v27663|sdireg|Only found on [[Wii mini]]}}
}}
}}