diff --git a/src/libultra/voice/voicestopread.c b/src/libultra/voice/voicestopread.c index 16ecddef8..d7dad3291 100644 --- a/src/libultra/voice/voicestopread.c +++ b/src/libultra/voice/voicestopread.c @@ -1,4 +1,52 @@ #include "global.h" // Forcibly stops voice recognition processing by the Voice Recognition System +#ifdef NON_EQUIVALENT +s32 osVoiceStopReadData(OSVoiceHandle* hd) { + s32 i; + s32 errorCode; + u8 sp3F; + s32 sp38; + + errorCode = __osVoiceGetStatus(hd->mq, hd->port, &sp3F); + if (errorCode != 0) { + return errorCode; + } + + if (sp3F & 2) { + return 0xF; + } + + if (hd->mode == 0) { + return 5; + } + + sp38 = 0x700; + errorCode = __osVoiceContWrite4(hd->mq, hd->port, 0, &sp38); + + if (errorCode == 0) { + for (i = 0; i < 20; i++) { + errorCode = __osVoiceCheckResult(hd, &sp3F); + if (errorCode & 0xFF00) { + if (((errorCode & 7) == 0) || ((errorCode & 7) == 7)) { + if (hd) {} + errorCode = 0; + hd->mode = 0; + } else { + errorCode = 5; + } + } else { + hd->mode = 0; + } + + if (errorCode != 0xF) { + break; + } + } + } + + return errorCode; +} +#else #pragma GLOBAL_ASM("asm/non_matchings/boot/voicestopread/osVoiceStopReadData.s") +#endif