76 lines
1.4 KiB
C
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;
|
|
}
|