Changes

1,851 bytes added ,  23:27, 12 June 2024
β†’β€ŽPatches: added {{Sectionstub|This possibly only covers some of the patches}}
Line 1: Line 1: βˆ’
'''MIOS''' is a special version of IOS that runs when the Wii enters GameCube mode, specifically launched by [[boot2]] if it detects a flag set by [[BC]]. The same MIOS is used for all GameCube games and software. It has seen minimal updates in the Wii's lifetime.
+
{{Infobox IOS
 +
| version = v10
 +
| type = Special [[IOS]]
 +
}}
   βˆ’
MIOS contains a full copy of the GC IPL,{{check}} slightly modified for the Wii. It performs patching of some games when they load, presumably to enhance compatibility with problematic titles.
+
'''MIOS''' is a special version of [[IOS]] that runs when the Wii enters GameCube mode, specifically launched by [[boot2]] if it detects the lowered clock speed set by [[BC]] (if [[IOS/Syscalls|syscall 55]] returns 162). The same MIOS is used for all GameCube games and software. It has seen minimal updates in the Wii's lifetime.
   βˆ’
MIOS is responsible for reading and running [[apploader]]s, but not for configuring the streaming audio (DTK) buffer; the [[System Menu/BS2|System Menu's BS2]] sets that up in state 11. Neither BC nor MIOS reset the disc drive, as doing so would clear the buffer configuration.
+
MIOS contains a full copy of the GC IPL,{{check}} slightly modified for the Wii; this includes linking it with [[RVL_SDK]] instead of DOL_SDK. It performs patching of some games when they load, presumably to enhance compatibility with problematic titles.
   βˆ’
Once a GameCube game starts, MIOS does not do much, as direct access to GameCube hardware is now enabled. The main function of MIOS at this point is to handle the front buttons on the Wii; pressing the power button at this point shuts down the GameCube game and launches boot2 again.
+
MIOS's Broadway code overwrites some of the Starlet code once it is booted. It is responsible for reading and running [[apploader]]s, but not for configuring the streaming audio (DTK) buffer; the [[System Menu/BS2|System Menu's BS2]] sets that up in state 11.  Neither BC nor MIOS reset the disc drive, as doing so would clear the buffer configuration.
 +
 
 +
Once a GameCube game starts, MIOS does not do much, as direct access to GameCube hardware is now enabled. The main function of MIOS at this point is to handle the front buttons on the Wii; pressing the power button at this point shuts down the GameCube game and launches boot2, which launches the [[System Menu]] to complete the shutdown.  It does this by listening to [[Hardware/Hollywood IRQs|IRQs]] 11 and 15, with [[Hardware/Hollywood_GPIOs|GPIOs]] configured to trigger an interrupt on the press of the power button; on IRQ 11, it shuts down with the RSTB_CPU bit of [[Hardware/Hollywood_Registers#HW_RESETS|HW_RESETS]] cleared, while the bit is set on IRQ 15.  Oddly, boot2 only sets [[Memory Map|0x80003164]] <!-- read as c0003164 by the system menu; written as 00003164 by boot2 --> (which the System Menu uses to decide to shut down) if RSTB_CPU is set, which means IRQ 15 must fire first.{{check}} <!-- to make things weirder, MIOS looks for IRQ 11 first, so IRQ 15 needs to trigger before IRQ 11, not just at the same time -->
 +
 
 +
MIOS seems to be described in paragraph 2 of section 2 of the [https://www.freepatentsonline.com/y2005/0132217.html Starlet patent]'s background information.
    
==Version Table==
 
==Version Table==
Line 13: Line 20:  
! ARM code size
 
! ARM code size
 
! PPC code size
 
! PPC code size
 +
! ARM build date
 
! Notes
 
! Notes
 
|-
 
|-
Line 18: Line 26:  
| 0x4620
 
| 0x4620
 
| 0x2785c
 
| 0x2785c
βˆ’
| Present on [[Prelaunch System Menu]] consoles.
+
| August 11, 2006
 +
| Present on [[Prelaunch System Menu]] consoles. Based on [[IOS4]]v3?
 
|-
 
|-
 
| v1
 
| v1
 
| 0x4954
 
| 0x4954
 
| 0x275bc
 
| 0x275bc
βˆ’
| Present on Launch Wiis as well as Korean Wiis (which lacked gamecube functionality at launch).
+
| September 2, 2006
 +
| Present on Launch Wiis as well as Korean Wiis (which lacked GameCube functionality). Based on [[IOS9]]v516?
 
|-
 
|-
 
| v4
 
| v4
 
|rowspan="2"| 0x4988
 
|rowspan="2"| 0x4988
 
| 0x277dc
 
| 0x277dc
βˆ’
| First release
+
|rowspan="2" | November 2, 2006
 +
| First release on [[NUS]].
 
|-
 
|-
 
| v5
 
| v5
 
|rowspan="4" |0x2659c
 
|rowspan="4" |0x2659c
βˆ’
| Blocks the GameCube Action Replay.
+
| Blocks Datel's GameCube discs for one ID
 
|-
 
|-
 
| v8
 
| v8
 
| 0x4d58
 
| 0x4d58
 +
|rowspan="3" | ?
 
| Overwrites memory to prevent the [[Tweezer Attack]].
 
| Overwrites memory to prevent the [[Tweezer Attack]].
 
|-
 
|-
 
| v9
 
| v9
 
| 0x4f1c
 
| 0x4f1c
βˆ’
|  
+
| Possibly disc-reading improvements or [[RVL-CPU-20]] compatibility? ([[3.4]])
 
|-
 
|-
 
| v10
 
| v10
 
| 0x4ee4
 
| 0x4ee4
βˆ’
|  
+
| Additional region checking by checking the last byte of the disc ID? Released in [[4.2]].
 
|}
 
|}
   Line 54: Line 66:     
==Patches==
 
==Patches==
 +
{{Sectionstub|This possibly only covers some of the patches}}
 
For MIOS v10, there are two places where patches happen: 813011e8 (used as a callback to DVD commands) and 81301598 (used before closing the apploader).
 
For MIOS v10, there are two places where patches happen: 813011e8 (used as a callback to DVD commands) and 81301598 (used before closing the apploader).
   Line 192: Line 205:     
==== Phantasy Star Online Episode I & II Plus ====
 
==== Phantasy Star Online Episode I & II Plus ====
βˆ’
Applies to GPOJ version 5; "Patch to GCOJ ver.5" (sic) is logged.  Copies 0x100 bytes (when only 16 would be needed) from 81302d40 to 80002200, making FUN_80002200 a function that NOPs 8000f2cc.  The patch itself does not NOP 8000f2cc.
+
Applies to GPOJ when the disc version in the [[Wii disc#Header|header]] is 5; "Patch to GCOJ ver.5" (sic) is logged.  This applies to the second release of the Japanese version of Phantasy Star Online Episode I & II Plus (though the GPOJ GameID is also used by the original Phantasy Star Online Episode I & II, which has two releases with versions 2 and 3).  Copies 0x100 bytes (when only 16 would be needed) from 81302d40 to 80002200, making FUN_80002200 a function that NOPs 8000f2cc.  The patch itself does not NOP 8000f2cc.
    
{{Navbox IOS|skipCat=yes}}
 
{{Navbox IOS|skipCat=yes}}
βˆ’
[[Category:IOS]]
+
[[Category:MIOS]]
100

edits