diff options
| author | EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com> | 2021-12-27 03:42:31 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-27 03:42:31 +0000 |
| commit | 76c39482bccb5e24d10a0b8dfaf9e9c747bc4ecb (patch) | |
| tree | 7f737dcbac20e14e31b0950c787c3f0f52c38de2 /src | |
| parent | 8ebdb504701d136c2d716117712948495ca61bb9 (diff) | |
contchannelreset OK (#428)
* contchannelreset OK
* Add to functions.h
* Rename argument
Diffstat (limited to 'src')
| -rw-r--r-- | src/libultra/io/contchannelreset.c | 26 |
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; +} |
