diff --git a/src/nu/nusicallbackremove.c b/src/nu/nusicallbackremove.c index 5404f24..16374fe 100644 --- a/src/nu/nusicallbackremove.c +++ b/src/nu/nusicallbackremove.c @@ -1,3 +1,19 @@ #include "common.h" -INCLUDE_ASM(const s32, "nu/nusicallbackremove", nuSiCallBackRemove); +#include "nu/nusys.h" + +void nuSiCallBackRemove(NUCallBackList* list) { + OSIntMask mask; + NUCallBackList** siCallBackListPtr = &nuSiCallBackList; + + while (*siCallBackListPtr) { + if ((*siCallBackListPtr)->next == list) { + mask = osSetIntMask(OS_IM_NONE); + (*siCallBackListPtr)->next = list->next; + list->next = NULL; + osSetIntMask(mask); + break; + } + siCallBackListPtr = &(*siCallBackListPtr)->next; + } +} \ No newline at end of file