In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Difference between revisions of "IOS28"

From WiiBrew
Jump to navigation Jump to search
(Most IOS28 modules aren’t tagged)
(buildstamps are very strange)
Line 11: Line 11:
 
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. Additionally, not all IOS28 modules have $IOSVersion tags (probably only the ones that changed since IOS22), but this was fixed in IOS30.
+
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 minutes later than IOS30, and DI, SDI, OH0, and OH1 were each built 1 minute later than in IOS30. 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.
  
 
== Titles using this IOS ==
 
== Titles using this IOS ==

Revision as of 08:15, 4 April 2022

IOS28
WiiDrawing.png
Technical info
TypeCommon IOS
StatusActive


IOS28 is the first IOS to be split into multiple modules, each its own ELF ARM binary, rather than all of IOS being part of a single monolithic binary. Its 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.

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.[1]

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 minutes later than IOS30, and DI, SDI, OH0, and OH1 were each built 1 minute later than in IOS30. 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.

Titles using this IOS

The only game that uses it is Metroid Prime 3: Corruption, and this IOS was included in the update partition of the disc.

Version history

Version Signing bug? /dev/flash access? ES_Identify? STM Release Exploit? STM IOCTL overflow? SDI register index bug? Notes
v1288 Yes Yes Yes Yes Yes Yes Not available on NUS.
v1292 No No No Yes Yes Yes
v1293 No No No No Yes Yes
v1550 No No No No Yes Yes
v1806 No No No No Yes Yes
v1807 No No No No Yes Yes Updated WL and NCD (4.3rev03)
v2063 No No No No Yes Yes Only found on vWii and newer RVL-101 units.
v27663 No No No No Yes Yes Only found on Wii mini

References

1. https://github.com/dolphin-emu/dolphin/blob/master/Source/Core/Core/IOS/IOS.cpp