Files
banjo-kazooie/src/core2/code_13780.c
Moses Troyer c2dd933d22 All Changes
2025-08-16 17:15:49 +00:00

76 lines
1.4 KiB
C

#include <ultra64.h>
#include "functions.h"
#include "variables.h"
#include "bsint.h"
s32 D_8037D160; //prev_state
s32 D_8037D164; //state
s32 D_8037D168; //next_state
s32 currentInterrupt;
s32 interruptResponse;
void bs_clearState(void) {
D_8037D160 = 0;
D_8037D164 = 0;
D_8037D168 = 0;
}
void bs_setState(s32 state_id) {
if (state_id == 0) {
return;
}
D_8037D168 = state_id;
if (bsList_getEndMethod(D_8037D164) != NULL) {
bsList_getEndMethod(D_8037D164)();
}
D_8037D160 = D_8037D164;
D_8037D164 = D_8037D168;
D_8037D168 = 0;
if (bsList_getInitMethod(D_8037D164) != NULL) {
bsList_getInitMethod(D_8037D164)();
}
}
s32 bs_getPrevState(void) {
return D_8037D160;
}
s32 bs_getState(void) {
return D_8037D164;
}
s32 bs_getNextState(void) {
return D_8037D168;
}
void bs_updateState(void) {
if (bsList_getUpdateMethod(D_8037D164) != NULL) {
bsList_getUpdateMethod(D_8037D164)();
}
}
s32 bs_checkInterrupt(enum bs_interrupt_e interruptId) {
currentInterrupt = interruptId;
interruptResponse = 0;
if (bsList_getInterruptMethod(D_8037D164) != NULL) {
bsList_getInterruptMethod(D_8037D164)();
}
return interruptResponse;
}
void bs_setInterruptResponse(s32 response) {
interruptResponse = response;
}
enum bs_interrupt_e bs_getInterruptType(void) {
return currentInterrupt;
}