MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / OSResetSystem

Function OSResetSystem

src/dolphin/src/os/OSReset.c:160–220  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

158}
159
160void OSResetSystem(int reset, u32 resetCode, BOOL forceMenu)
161{
162 BOOL rc;
163 BOOL disableRecalibration;
164 u32 unk[3]; // dumb compiler
165
166 OSDisableScheduler();
167 __OSStopAudioSystem();
168
169 if (reset == OS_RESET_SHUTDOWN || (reset == OS_RESET_RESTART && bootThisDol != 0))
170 {
171 disableRecalibration = __PADDisableRecalibration(TRUE);
172 }
173
174 while (!__OSCallResetFunctions(FALSE))
175 {
176 ;
177 }
178
179 if (reset == OS_RESET_HOTRESET && forceMenu)
180 {
181 OSSram* sram;
182
183 sram = __OSLockSram();
184 sram->flags |= 0x40;
185 __OSUnlockSram(TRUE);
186
187 while (!__OSSyncSram())
188 {
189 ;
190 }
191 }
192
193 OSDisableInterrupts();
194 __OSCallResetFunctions(TRUE);
195 LCDisable();
196 if (reset == OS_RESET_HOTRESET)
197 {
198 __OSDoHotReset(resetCode);
199 }
200 else if (reset == OS_RESET_RESTART)
201 {
202 if ((*(u32*)OSPhysicalToCached(0x30EC) = bootThisDol) != 0)
203 {
204 __PADDisableRecalibration(disableRecalibration);
205 }
206 KillThreads();
207 OSEnableScheduler();
208 __OSReboot(resetCode, forceMenu);
209 }
210
211 KillThreads();
212 memset(OSPhysicalToCached(0x40), 0, 0xCC - 0x40);
213 memset(OSPhysicalToCached(0xD4), 0, 0xE8 - 0xD4);
214 memset(OSPhysicalToCached(0xF4), 0, 0xF8 - 0xF4);
215 memset(OSPhysicalToCached(0x3000), 0, 0xC0);
216 memset(OSPhysicalToCached(0x30C8), 0, 0xD4 - 0xC8);
217 memset(OSPhysicalToCached(0x30E2), 0, 1);

Callers 2

__check_pad3Function · 0.85
CheckResetButtonMethod · 0.85

Calls 13

OSDisableSchedulerFunction · 0.85
__OSStopAudioSystemFunction · 0.85
__OSCallResetFunctionsFunction · 0.85
__OSLockSramFunction · 0.85
__OSUnlockSramFunction · 0.85
__OSSyncSramFunction · 0.85
OSDisableInterruptsFunction · 0.85
__OSDoHotResetFunction · 0.85
KillThreadsFunction · 0.85
OSEnableSchedulerFunction · 0.85
__OSRebootFunction · 0.85

Tested by

no test coverage detected