Changes

Jump to navigation Jump to search
74 bytes added ,  10:16, 15 May 2022
noted that broadway code uses starlet code area for data
Line 8: Line 8:  
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.
 
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.
   −
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'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 -->
 
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 -->
5,579

edits

Navigation menu