summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com>2021-12-27 03:42:31 +0000
committerGitHub <noreply@github.com>2021-12-27 03:42:31 +0000
commit76c39482bccb5e24d10a0b8dfaf9e9c747bc4ecb (patch)
tree7f737dcbac20e14e31b0950c787c3f0f52c38de2 /src
parent8ebdb504701d136c2d716117712948495ca61bb9 (diff)
contchannelreset OK (#428)
* contchannelreset OK * Add to functions.h * Rename argument
Diffstat (limited to 'src')
-rw-r--r--src/libultra/io/contchannelreset.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/libultra/io/contchannelreset.c b/src/libultra/io/contchannelreset.c
index 841dad738..5a66274a9 100644
--- a/src/libultra/io/contchannelreset.c
+++ b/src/libultra/io/contchannelreset.c
@@ -1,3 +1,27 @@
#include "global.h"
-#pragma GLOBAL_ASM("asm/non_matchings/boot/contchannelreset/__osContChannelReset.s")
+s32 __osContChannelReset(OSMesgQueue* mq, s32 channel) {
+ s32 i;
+ s32 ret;
+ u8* bufptr = (u8*)&__osPfsPifRam;
+
+ __osSiGetAccess();
+
+ __osPfsPifRam.pifstatus = 1;
+
+ for (i = 0; i < channel; i++) {
+ *bufptr++ = 0;
+ }
+
+ *bufptr++ = 0xFD;
+ *bufptr = CONT_CMD_END;
+
+ __osSiRawStartDma(OS_WRITE, &__osPfsPifRam);
+ osRecvMesg(mq, NULL, OS_MESG_BLOCK);
+ ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam);
+ osRecvMesg(mq, NULL, OS_MESG_BLOCK);
+
+ __osSiRelAccess();
+
+ return ret;
+}