* fixes

* 2 nusys funcs

* warnings

* appendGfx_npc_blur

* clean

* cleanup, standardize button macro
This commit is contained in:
Ethan Roseman 2022-12-07 03:39:22 -05:00 committed by GitHub
parent 46add495eb
commit 5b5b8c579f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 352 additions and 511 deletions

View File

@ -1104,7 +1104,7 @@ typedef struct ModelAnimator {
/* 0x2CC */ s32 treeIndexPos; /* 0x2CC */ s32 treeIndexPos;
/* 0x2D0 */ s32 savedTreePos; /* 0x2D0 */ s32 savedTreePos;
/* 0x2D4 */ void (*fpRenderCallback)(void*); /* 0x2D4 */ void (*fpRenderCallback)(void*);
/* 0x2D8 */ s32 renderCallbackArg; /* 0x2D8 */ void* renderCallbackArg;
/* 0x2DC */ char unk_2DC[4]; /* 0x2DC */ char unk_2DC[4];
} ModelAnimator; // size = 0x2E0 } ModelAnimator; // size = 0x2E0
@ -1743,7 +1743,7 @@ typedef struct AnimatedModel {
/* 0x10 */ Vec3f rot; /* 0x10 */ Vec3f rot;
/* 0x1C */ Vec3f scale; /* 0x1C */ Vec3f scale;
/* 0x28 */ Mtx mtx; /* 0x28 */ Mtx mtx;
/* 0x68 */ u32 currentAnimData; /* 0x68 */ s16* currentAnimData;
/* 0x6C */ char unk_6C[4]; /* 0x6C */ char unk_6C[4];
} AnimatedModel; // size = 0x70 } AnimatedModel; // size = 0x70

View File

@ -180,13 +180,13 @@ void delete_model_animator_nodes(ModelAnimator* animator);
void delete_model_animator(ModelAnimator* animator); void delete_model_animator(ModelAnimator* animator);
void render_animated_model_with_vertices(s32 animatorID, Mtx* rootTransform, s32 segment, void* baseAddr); void render_animated_model_with_vertices(s32 animatorID, Mtx* rootTransform, s32 segment, void* baseAddr);
void appendGfx_animator(ModelAnimator* animator); void appendGfx_animator(ModelAnimator* animator);
ModelAnimator* set_animator_render_callback(s32 animModelID, s32 callbackArg, void (*callbackFunc)(void*)); ModelAnimator* set_animator_render_callback(s32 animModelID, void* callbackArg, void (*callbackFunc)(void*));
void reload_mesh_animator_tree(ModelAnimator* animator); void reload_mesh_animator_tree(ModelAnimator* animator);
s32 step_mesh_animator(ModelAnimator* animator); s32 step_mesh_animator(ModelAnimator* animator);
void set_custom_gfx_builders(s32 customGfxIndex, ModelCustomGfxBuilderFunc pre, ModelCustomGfxBuilderFunc post); void set_custom_gfx_builders(s32 customGfxIndex, ModelCustomGfxBuilderFunc pre, ModelCustomGfxBuilderFunc post);
void mdl_make_local_vertex_copy(s32 arg0, u16 treeIdx, s32); void mdl_make_local_vertex_copy(s32 arg0, u16 treeIdx, s32);
void play_model_animation_starting_from(s32 index, s32 animPos, s32 framesToSkip); void play_model_animation_starting_from(s32 index, s16* animPos, s32 framesToSkip);
void set_background_color_blend(u8 r, u8 g, u8 b, u8 a); void set_background_color_blend(u8 r, u8 g, u8 b, u8 a);

View File

@ -461,7 +461,7 @@ void disable_npc_shadow(Npc* npc);
void update_npc_blur(Npc* npc); void update_npc_blur(Npc* npc);
void appendGfx_npc_blur(void* data); void appendGfx_npc_blur(Npc* npc);
void npc_enable_collisions(void); void npc_enable_collisions(void);

View File

@ -129,7 +129,7 @@ extern char wMapTexName[];
extern char wMapHitName[]; extern char wMapHitName[];
extern char wMapShapeName[]; extern char wMapShapeName[];
extern char wMapBgName[]; extern char wMapBgName[];
extern struct ShapeFile* D_80210000; // shouldnt be a pointer extern struct ShapeFile D_80210000;
extern u8 D_802D9D70; // player alpha1 copy? extern u8 D_802D9D70; // player alpha1 copy?
extern u8 D_802D9D71; // player alpha2 copy? extern u8 D_802D9D71; // player alpha2 copy?

View File

@ -221,7 +221,7 @@ void btl_state_update_normal_start(void) {
ASSERT(size <= 0x8000); ASSERT(size <= 0x8000);
model = D_80210000; model = D_80210000.root;
textureRom = get_asset_offset(stage->texture, &size); textureRom = get_asset_offset(stage->texture, &size);
if (model != NULL) { if (model != NULL) {
load_data_for_models(model, textureRom, size); load_data_for_models(model, textureRom, size);

View File

@ -1629,7 +1629,7 @@ ApiStatus RunToGoal(Evt* script, s32 isInitialCall) {
return ApiStatus_DONE1; return ApiStatus_DONE1;
} }
s32 IdleRunToGoal(Evt* script, s32 isInitialCall) { ApiStatus IdleRunToGoal(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos; Bytecode* args = script->ptrReadPos;
Actor* actor; Actor* actor;
ActorMovement* movement; ActorMovement* movement;
@ -1714,7 +1714,7 @@ s32 IdleRunToGoal(Evt* script, s32 isInitialCall) {
return ApiStatus_DONE1; return ApiStatus_DONE1;
} }
s32 JumpPartTo(Evt* script, s32 isInitialCall) { ApiStatus JumpPartTo(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos; Bytecode* args = script->ptrReadPos;
Actor* actor; Actor* actor;
ActorPart* part; ActorPart* part;
@ -1808,7 +1808,7 @@ s32 JumpPartTo(Evt* script, s32 isInitialCall) {
} }
} }
s32 FallPartTo(Evt* script, s32 isInitialCall) { ApiStatus FallPartTo(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos; Bytecode* args = script->ptrReadPos;
Actor* actor; Actor* actor;
ActorPart* part; ActorPart* part;
@ -1897,7 +1897,7 @@ s32 FallPartTo(Evt* script, s32 isInitialCall) {
} }
} }
s32 LandJumpPart(Evt* script, s32 isInitialCall) { ApiStatus LandJumpPart(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos; Bytecode* args = script->ptrReadPos;
Actor* actor; Actor* actor;
ActorPart* part; ActorPart* part;
@ -1944,7 +1944,7 @@ s32 LandJumpPart(Evt* script, s32 isInitialCall) {
return ApiStatus_BLOCK; return ApiStatus_BLOCK;
} }
s32 RunPartTo(Evt* script, s32 isInitialCall) { ApiStatus RunPartTo(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos; Bytecode* args = script->ptrReadPos;
Actor* actor; Actor* actor;
ActorPart* part; ActorPart* part;
@ -2074,7 +2074,7 @@ s32 RunPartTo(Evt* script, s32 isInitialCall) {
f32 update_lerp_battle(s32 easing, f32 start, f32 end, s32 elapsed, s32 duration); f32 update_lerp_battle(s32 easing, f32 start, f32 end, s32 elapsed, s32 duration);
INCLUDE_ASM(s32, "1A5830", update_lerp_battle); INCLUDE_ASM(s32, "1A5830", update_lerp_battle);
s32 FlyToGoal(Evt* script, s32 isInitialCall) { ApiStatus FlyToGoal(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos; Bytecode* args = script->ptrReadPos;
Actor* actor; Actor* actor;
ActorState* actorState; ActorState* actorState;
@ -2229,7 +2229,7 @@ s32 FlyToGoal(Evt* script, s32 isInitialCall) {
return ApiStatus_BLOCK; return ApiStatus_BLOCK;
} }
s32 IdleFlyToGoal(Evt* script, s32 isInitialCall) { ApiStatus IdleFlyToGoal(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos; Bytecode* args = script->ptrReadPos;
Actor* actor; Actor* actor;
ActorMovement* movement; ActorMovement* movement;
@ -2330,7 +2330,7 @@ s32 IdleFlyToGoal(Evt* script, s32 isInitialCall) {
return ApiStatus_BLOCK; return ApiStatus_BLOCK;
} }
s32 FlyPartTo(Evt* script, s32 isInitialCall) { ApiStatus FlyPartTo(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos; Bytecode* args = script->ptrReadPos;
Actor* actor; Actor* actor;
ActorPart* part; ActorPart* part;

View File

@ -1229,7 +1229,7 @@ s32 func_802A2C84(void) {
break; break;
} }
if (battleStatus->currentButtonsPressed & 0x4000) { if (battleStatus->currentButtonsPressed & BUTTON_B) {
sfx_play_sound(SOUND_MENU_BACK); sfx_play_sound(SOUND_MENU_BACK);
func_802A27E4(); func_802A27E4();
battle_menu_moveState = -2; battle_menu_moveState = -2;

View File

@ -584,7 +584,7 @@ void peach_check_for_parasol_input(void) {
} }
} }
} }
} else if (gGameStatusPtr->peachFlags & PEACH_STATUS_FLAG_HAS_PARASOL && playerStatus->pressedButtons & B_BUTTON) { } else if (gGameStatusPtr->peachFlags & PEACH_STATUS_FLAG_HAS_PARASOL && playerStatus->pressedButtons & BUTTON_B) {
set_action_state(ACTION_STATE_USE_SNEAKY_PARASOL); set_action_state(ACTION_STATE_USE_SNEAKY_PARASOL);
} }
} }

View File

@ -1083,7 +1083,7 @@ void check_input_midair_jump(void) {
!(gPlayerStatus.animFlags & (PA_FLAGS_8BIT_MARIO | PA_FLAGS_USING_WATT)) && !(gPlayerStatus.animFlags & (PA_FLAGS_8BIT_MARIO | PA_FLAGS_USING_WATT)) &&
gPlayerStatus.peakJumpTime >= 6 && gPlayerStatus.peakJumpTime >= 6 &&
gPlayerStatus.timeInAir < 18 && gPlayerStatus.timeInAir < 18 &&
gPlayerStatus.pressedButtons & A_BUTTON) { gPlayerStatus.pressedButtons & BUTTON_A) {
switch (gPlayerData.bootsLevel) { switch (gPlayerData.bootsLevel) {
case 0: case 0:

View File

@ -1258,7 +1258,7 @@ void create_popup_menu(PopupMenu* popup) {
D_8010D650 = 255; D_8010D650 = 255;
D_8010D691 = 4; D_8010D691 = 4;
D_8010D692 = 6; D_8010D692 = 6;
D_8010D694 = create_worker_frontUI(popup_menu_update, NULL); D_8010D694 = create_worker_frontUI((void (*) (void)) popup_menu_update, NULL);
} }
void func_800F4FC4(PopupMenu* popup) { void func_800F4FC4(PopupMenu* popup) {
@ -1303,7 +1303,7 @@ void func_800F4FC4(PopupMenu* popup) {
D_8010D650 = 255; D_8010D650 = 255;
D_8010D691 = 4; D_8010D691 = 4;
D_8010D692 = 6; D_8010D692 = 6;
D_8010D694 = create_worker_frontUI(popup_menu_update, NULL); D_8010D694 = create_worker_frontUI((void (*) (void)) popup_menu_update, NULL);
} }
void func_800F513C(PopupMenu* popup) { void func_800F513C(PopupMenu* popup) {
@ -1347,7 +1347,7 @@ void func_800F513C(PopupMenu* popup) {
D_8010D650 = 255; D_8010D650 = 255;
D_8010D691 = 9; D_8010D691 = 9;
D_8010D692 = 2; D_8010D692 = 2;
D_8010D694 = create_worker_frontUI(popup_menu_update, NULL); D_8010D694 = create_worker_frontUI((void (*) (void)) popup_menu_update, NULL);
} }
void func_800F52BC(void) { void func_800F52BC(void) {

View File

@ -953,7 +953,7 @@ ModelAnimator* get_animator_by_index(s32 animModelID) {
return (*gCurrentAnimMeshListPtr)[animModelID & ~0x800]; return (*gCurrentAnimMeshListPtr)[animModelID & ~0x800];
} }
ModelAnimator* set_animator_render_callback(s32 animModelID, s32 callbackArg, void (*callbackFunc)(void*)) { ModelAnimator* set_animator_render_callback(s32 animModelID, void* callbackArg, void (*callbackFunc)(void*)) {
ModelAnimator* ret = (*gCurrentAnimMeshListPtr)[animModelID & ~0x800]; ModelAnimator* ret = (*gCurrentAnimMeshListPtr)[animModelID & ~0x800];
ret->fpRenderCallback = callbackFunc; ret->fpRenderCallback = callbackFunc;
@ -1021,7 +1021,7 @@ void play_model_animation(s32 index, s16* animPos) {
animator->nextUpdateTime = 1.0f; animator->nextUpdateTime = 1.0f;
} }
void play_model_animation_starting_from(s32 index, s32 animPos, s32 framesToSkip) { void play_model_animation_starting_from(s32 index, s16* animPos, s32 framesToSkip) {
s32 indexMasked = index & ~0x800; s32 indexMasked = index & ~0x800;
ModelAnimator* animator = (*gCurrentAnimMeshListPtr)[indexMasked]; ModelAnimator* animator = (*gCurrentAnimMeshListPtr)[indexMasked];
s32 i; s32 i;
@ -1030,8 +1030,8 @@ void play_model_animation_starting_from(s32 index, s32 animPos, s32 framesToSkip
animPos = ((s32)animPos & 0xFFFFFF) + (s32)animator->animationBuffer; // TODO: array access? animPos = ((s32)animPos & 0xFFFFFF) + (s32)animator->animationBuffer; // TODO: array access?
} }
animator->animReadPos = (s16*) animPos; animator->animReadPos = animPos;
animator->savedReadPos = (s16*) animPos; animator->savedReadPos = animPos;
animator->treeIndexPos = 0; animator->treeIndexPos = 0;
animator->nextUpdateTime = 1.0f; animator->nextUpdateTime = 1.0f;

View File

@ -1390,10 +1390,18 @@ void render_entities(void) {
if (entity->flags & ENTITY_FLAGS_HAS_ANIMATED_MODEL) { if (entity->flags & ENTITY_FLAGS_HAS_ANIMATED_MODEL) {
if (D_8014AFB0 == 0xFF) { if (D_8014AFB0 == 0xFF) {
if (entity->renderSetupFunc != NULL) { if (entity->renderSetupFunc != NULL) {
set_animator_render_callback(entity->virtualModelIndex, entity->listIndex, entity->renderSetupFunc); set_animator_render_callback(
entity->virtualModelIndex,
(void*)(u32) entity->listIndex,
(void (*)(void*)) entity->renderSetupFunc
);
} }
} else { } else {
set_animator_render_callback(entity->virtualModelIndex, entity->listIndex, func_8010FE44); set_animator_render_callback(
entity->virtualModelIndex,
(void*)(u32) entity->listIndex,
func_8010FE44
);
} }
if (entity->gfxBaseAddr == NULL) { if (entity->gfxBaseAddr == NULL) {
@ -1407,9 +1415,11 @@ void render_entities(void) {
} else { } else {
if (D_8014AFB0 == 0xFF) { if (D_8014AFB0 == 0xFF) {
if (entity->renderSetupFunc != NULL) { if (entity->renderSetupFunc != NULL) {
bind_entity_model_setupGfx(entity->virtualModelIndex, bind_entity_model_setupGfx(
entity->virtualModelIndex,
(void*)(u32) entity->listIndex, (void*)(u32) entity->listIndex,
entity->renderSetupFunc); (void (*)(void*)) entity->renderSetupFunc
);
} else { } else {
get_entity_model(entity->virtualModelIndex)->fpSetupGfxCallback = NULL; get_entity_model(entity->virtualModelIndex)->fpSetupGfxCallback = NULL;
} }
@ -4477,7 +4487,28 @@ void mdl_get_vertex_count(Gfx* gfx, s32* numVertices, Vtx** baseVtx, s32* gfxCou
} }
void mdl_local_gfx_update_vtx_pointers(Gfx* nodeDlist, Vtx* baseVtx, Gfx* arg2, Vtx* arg3); void mdl_local_gfx_update_vtx_pointers(Gfx* nodeDlist, Vtx* baseVtx, Gfx* arg2, Vtx* arg3);
#ifdef NON_MATCHING
void mdl_local_gfx_update_vtx_pointers(Gfx* nodeDlist, Vtx* baseVtx, Gfx* arg2, Vtx* arg3) {
u32 w0;
u32 temp_v1;
u32 w1;
do {
w0 = (u32) nodeDlist->words.w0 >> 0;
w1 = nodeDlist->words.w1;
temp_v1 = w0 >> 0x18;
nodeDlist++;
if (temp_v1 == 1) {
w1 = &arg3[(s32) (w1 - (s32)baseVtx) >> 4];
}
arg2->words.w0 = w0;
arg2->words.w1 = w1;
arg2++;
} while (temp_v1 != G_ENDDL);
}
#else
INCLUDE_ASM(s32, "a5dd0_len_114e0", mdl_local_gfx_update_vtx_pointers); INCLUDE_ASM(s32, "a5dd0_len_114e0", mdl_local_gfx_update_vtx_pointers);
#endif
void mdl_local_gfx_copy_vertices(Vtx* from, s32 num, Vtx* to) { void mdl_local_gfx_copy_vertices(Vtx* from, s32 num, Vtx* to) {
u32 i; u32 i;

View File

@ -118,7 +118,7 @@ void N(update)(void) {
} }
} }
if (battleStatus->currentButtonsPressed & A_BUTTON) { if (battleStatus->currentButtonsPressed & BUTTON_A) {
s32 a = battleStatus->actionCmdDifficultyTable[actionCommandStatus->difficulty]; s32 a = battleStatus->actionCmdDifficultyTable[actionCommandStatus->difficulty];
s32 b = actionCommandStatus->targetWeakness * 850; s32 b = actionCommandStatus->targetWeakness * 850;
s32 temp_v1_2 = (a * b) / 10000; s32 temp_v1_2 = (a * b) / 10000;

View File

@ -18,7 +18,7 @@ s32 N(D_802A10F0)[] = {
EvtScript N(CheckForAPress) = { EvtScript N(CheckForAPress) = {
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario_BeforeJump) EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario_BeforeJump)
EVT_LOOP(5) EVT_LOOP(5)
EVT_CALL(CheckButtonPress, A_BUTTON, LVar0) EVT_CALL(CheckButtonPress, BUTTON_A, LVar0)
EVT_IF_EQ(LVar0, TRUE) EVT_IF_EQ(LVar0, TRUE)
EVT_BREAK_LOOP EVT_BREAK_LOOP
EVT_END_IF EVT_END_IF

View File

@ -18,7 +18,7 @@ s32 N(D_802A10F0)[] = {
EvtScript N(CheckForAPress) = { EvtScript N(CheckForAPress) = {
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario_BeforeJump) EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario_BeforeJump)
EVT_LOOP(5) EVT_LOOP(5)
EVT_CALL(CheckButtonPress, A_BUTTON, LVar0) EVT_CALL(CheckButtonPress, BUTTON_A, LVar0)
EVT_IF_EQ(LVar0, TRUE) EVT_IF_EQ(LVar0, TRUE)
EVT_BREAK_LOOP EVT_BREAK_LOOP
EVT_END_IF EVT_END_IF

View File

@ -27,7 +27,7 @@ s32 D_802A1140_73D9A0[] = {
EvtScript N(CheckForAPress) = { EvtScript N(CheckForAPress) = {
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario_BeforeJump) EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario_BeforeJump)
EVT_LOOP(5) EVT_LOOP(5)
EVT_CALL(CheckButtonPress, A_BUTTON, LVar0) EVT_CALL(CheckButtonPress, BUTTON_A, LVar0)
EVT_IF_EQ(LVar0, TRUE) EVT_IF_EQ(LVar0, TRUE)
EVT_BREAK_LOOP EVT_BREAK_LOOP
EVT_END_IF EVT_END_IF

View File

@ -245,8 +245,6 @@ void entity_StarBoxLauncher_init(Entity* entity) {
data->basePosZ = entity->position.z; data->basePosZ = entity->position.z;
} }
EntityScript Entity_StarBoxLauncher_Script = { EntityScript Entity_StarBoxLauncher_Script = {
es_SetCallback(entity_StarBoxLauncher_check_launch, 0) es_SetCallback(entity_StarBoxLauncher_check_launch, 0)
es_SetCallback(entity_StarBoxLauncher_shake_box, 4) es_SetCallback(entity_StarBoxLauncher_shake_box, 4)

View File

@ -110,7 +110,7 @@ ApiStatus LoadAnimatedMesh(Evt* script, s32 isInitialCall) {
ApiStatus PlayModelAnimation(Evt* script, s32 isInitialCall) { ApiStatus PlayModelAnimation(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos; Bytecode* args = script->ptrReadPos;
s32 index = evt_get_variable(script, *args++); s32 index = evt_get_variable(script, *args++);
s32 var2 = evt_get_variable(script, *args++); s16* var2 = (s16*) evt_get_variable(script, *args++);
AnimatedModel* model = (*gCurrentMeshAnimationListPtr)[index]; AnimatedModel* model = (*gCurrentMeshAnimationListPtr)[index];
model->currentAnimData = var2; model->currentAnimData = var2;
@ -122,7 +122,7 @@ ApiStatus PlayModelAnimation(Evt* script, s32 isInitialCall) {
ApiStatus PlayModelAnimationStartingFrom(Evt* script, s32 isInitialCall) { ApiStatus PlayModelAnimationStartingFrom(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos; Bytecode* args = script->ptrReadPos;
s32 index = evt_get_variable(script, *args++); s32 index = evt_get_variable(script, *args++);
s32 var2 = evt_get_variable(script, *args++); s16* var2 = (s16*) evt_get_variable(script, *args++);
s32 var3 = evt_get_variable(script, *args++); s32 var3 = evt_get_variable(script, *args++);
AnimatedModel* model = (*gCurrentMeshAnimationListPtr)[index]; AnimatedModel* model = (*gCurrentMeshAnimationListPtr)[index];
@ -135,7 +135,7 @@ ApiStatus PlayModelAnimationStartingFrom(Evt* script, s32 isInitialCall) {
ApiStatus ChangeModelAnimation(Evt* script, s32 isInitialCall) { ApiStatus ChangeModelAnimation(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos; Bytecode* args = script->ptrReadPos;
s32 index = evt_get_variable(script, *args++); s32 index = evt_get_variable(script, *args++);
s32 var2 = evt_get_variable(script, *args++); s16* var2 = (s16*) evt_get_variable(script, *args++);
AnimatedModel* model = (*gCurrentMeshAnimationListPtr)[index]; AnimatedModel* model = (*gCurrentMeshAnimationListPtr)[index];
if (model->currentAnimData == var2) { if (model->currentAnimData == var2) {

View File

@ -1025,7 +1025,82 @@ void update_npc_blur(Npc* npc) {
motionBlur->index = index; motionBlur->index = index;
} }
INCLUDE_ASM(void, "npc", appendGfx_npc_blur, Npc* npc); void appendGfx_npc_blur(Npc* npc) {
Matrix4f sp20, sp60;
f32 x, y, z;
f32 yaw;
s32 var_s3;
s32 var_s5;
s32 index;
NpcMotionBlur* blur;
var_s3 = 0;
var_s5 = 0;
blur = npc->blur.motion;
index = blur->index;
while (TRUE) {
index--;
var_s3++;
if (index < 0) {
index = ARRAY_COUNT(blur->x) - 1;
}
if (index == blur->index) {
break;
}
if (var_s3 >= 3) {
var_s3 = 0;
var_s5++;
if (var_s5 >= 4) {
break;
}
x = blur->x[index];
y = blur->y[index];
z = blur->z[index];
func_802DE894(npc->spriteInstanceID, 7, 255, 255, 255, 120 - (var_s5 * 20), 0);
yaw = npc->renderYaw;
guTranslateF(sp20, x, y, z);
if (npc->rotation.y != 0.0f) {
guRotateF(sp60, npc->rotation.y, 0.0f, 1.0f, 0.0f);
guMtxCatF(sp60, sp20, sp20);
}
if (npc->rotation.x != 0.0f) {
guRotateF(sp60, npc->rotation.y, 0.0f, 1.0f, 0.0f);
guMtxCatF(sp60, sp20, sp20);
}
if (npc->rotation.z != 0.0f) {
guRotateF(sp60, npc->rotation.y, 0.0f, 1.0f, 0.0f);
guMtxCatF(sp60, sp20, sp20);
}
if (
(npc->scale.x * SPRITE_WORLD_SCALE_D) != 1.0 ||
((npc->scale.y * npc->verticalStretch) * SPRITE_WORLD_SCALE_D) != 1.0 ||
(npc->scale.z * SPRITE_WORLD_SCALE_D) != 1.0)
{
guScaleF(
sp60,
npc->scale.x * SPRITE_WORLD_SCALE_D,
(npc->scale.y * npc->verticalStretch) * SPRITE_WORLD_SCALE_D,
npc->scale.z * SPRITE_WORLD_SCALE_D
);
guMtxCatF(sp60, sp20, sp20);
}
if (!(npc->flags & NPC_FLAG_NO_ANIMS_LOADED)) {
if (!(npc->flags & NPC_FLAG_1000000)) {
spr_draw_npc_sprite(npc->spriteInstanceID, (s32) yaw, 0, 0, sp20);
}
} else {
spr_draw_player_sprite(0x40000001, (s32) yaw, 0, 0, sp20);
}
}
}
func_8003D3BC(npc);
}
void npc_enable_collisions(void) { void npc_enable_collisions(void) {
D_800A0B94 = 1; D_800A0B94 = 1;

View File

@ -2,7 +2,7 @@
#include "nu/nusys.h" #include "nu/nusys.h"
s32 contRetrace(void); s32 contRetrace(void);
s32 contReadData(void); s32 contReadData(s32* arg0);
s32 contReadNW(void); s32 contReadNW(void);
s32 contQuery(void); s32 contQuery(void);
@ -10,7 +10,7 @@ u32 D_80093D20 = 0;
s32(*D_80093D24[4])(void) = { s32(*D_80093D24[4])(void) = {
contRetrace, contRetrace,
contReadData, (s32 (*) (void)) contReadData,
contReadNW, contReadNW,
contQuery, contQuery,
}; };
@ -19,7 +19,7 @@ s32 D_80093D34 = 0;
NUCallBackList nuContCallBack = { NUCallBackList nuContCallBack = {
NULL, NULL,
&D_80093D24, (s32 (**)(NUSiCommonMesg*)) &D_80093D24,
0x100, 0x100,
0, 0,
}; };

View File

@ -12,6 +12,7 @@ s32* D_80093B94 = D_80093B84;
void nuScEventHandler(void); void nuScEventHandler(void);
void nuScExecuteAudio(void); void nuScExecuteAudio(void);
void nuScExecuteGraphics(void); void nuScExecuteGraphics(void);
void nuScWaitTaskReady(NUScTask* task);
extern u64 nuScStack[NU_SC_STACK_SIZE / sizeof(u64)]; extern u64 nuScStack[NU_SC_STACK_SIZE / sizeof(u64)];
extern u64 nuScAudioStack[NU_SC_STACK_SIZE / sizeof(u64)]; extern u64 nuScAudioStack[NU_SC_STACK_SIZE / sizeof(u64)];
@ -65,9 +66,96 @@ void nuScCreateScheduler(u8 videoMode, u8 numFields) {
osStartThread(&nusched.graphicsThread); osStartThread(&nusched.graphicsThread);
} }
INCLUDE_ASM(void, "os/nusys/nuSched", nuScExecuteAudio); void nuScExecuteAudio(void) {
NUScTask* gfxTask;
NUScTask* audioTask;
OSMesg msg;
u32 yieldFlag;
INCLUDE_ASM(void, "os/nusys/nuSched", nuScExecuteGraphics); while(1) {
osRecvMesg(&nusched.audioRequestMQ, (OSMesg *) &audioTask, OS_MESG_BLOCK);
if (nuScPreNMIFlag & NU_SC_BEFORE_RESET) {
osSendMesg(audioTask->msgQ, audioTask->msg, OS_MESG_BLOCK);
continue;
}
osWritebackDCacheAll();
yieldFlag = 0;
gfxTask = nusched.curGraphicsTask;
if (gfxTask != NULL) {
osSpTaskYield();
osRecvMesg(&nusched.rspMQ, &msg, OS_MESG_BLOCK);
if (osSpTaskYielded(&gfxTask->list)) {
yieldFlag = 1;
} else {
yieldFlag = 2;
}
}
nusched.curAudioTask = audioTask;
osSpTaskStart(&audioTask->list);
osRecvMesg(&nusched.rspMQ, &msg, OS_MESG_BLOCK);
nusched.curAudioTask = NULL;
if( nusched.graphicsTaskSuspended )
osSendMesg(&nusched.waitMQ, &msg, OS_MESG_BLOCK );
if (yieldFlag == 1) {
osSpTaskStart(&gfxTask->list);
} else if (yieldFlag == 2) {
osSendMesg(&nusched.rspMQ, &msg, OS_MESG_BLOCK);
}
osSendMesg(audioTask->msgQ, audioTask->msg, OS_MESG_BLOCK);
}
}
void nuScExecuteGraphics(void) {
OSMesg msg;
NUScTask* gfxTask;
OSIntMask mask;
while (TRUE) {
osRecvMesg(&nusched.graphicsRequestMQ, (OSMesg *) &gfxTask, OS_MESG_BLOCK);
if(nuScPreNMIFlag & NU_SC_BEFORE_RESET){
osSendMesg(gfxTask->msgQ, (OSMesg*) gfxTask, OS_MESG_BLOCK);
continue;
}
nuScWaitTaskReady(gfxTask);
mask = osSetIntMask(OS_IM_NONE);
if (nusched.curAudioTask) {
nusched.graphicsTaskSuspended = gfxTask;
osSetIntMask(mask);
osRecvMesg(&nusched.waitMQ, &msg, OS_MESG_BLOCK);
mask = osSetIntMask(OS_IM_NONE);
nusched.graphicsTaskSuspended = NULL;
}
osSetIntMask(mask);
mask = osSetIntMask(OS_IM_NONE);
nusched.curGraphicsTask = gfxTask;
osSetIntMask(mask);
osSpTaskStart(&gfxTask->list);
osRecvMesg(&nusched.rspMQ, &msg, OS_MESG_BLOCK);
mask = osSetIntMask(OS_IM_NONE);
nusched.curGraphicsTask = NULL;
osSetIntMask(mask);
if (!(gfxTask->flags & NU_SC_NORDP)) {
osRecvMesg(&nusched.rdpMQ, &msg, OS_MESG_BLOCK);
}
osSendMesg(gfxTask->msgQ, (OSMesg*) gfxTask, OS_MESG_BLOCK);
}
}
void nuScAddClient(NUScClient* c, OSMesgQueue* mq, NUScMsg msgType) { void nuScAddClient(NUScClient* c, OSMesgQueue* mq, NUScMsg msgType) {
s32 mask; s32 mask;
@ -152,7 +240,51 @@ s32 nuScGetFrameRate(void) {
INCLUDE_ASM(s32, "os/nusys/nuSched", nuScGetFrameRate, void); INCLUDE_ASM(s32, "os/nusys/nuSched", nuScGetFrameRate, void);
#endif #endif
INCLUDE_ASM(void, "os/nusys/nuSched", nuScEventHandler); #ifdef NON_MATCHING
void nuScEventHandler(void) {
OSMesg msg;
s32 beforeResetFrame;
nuScRetraceCounter = 0;
while (TRUE) {
osRecvMesg(&nusched.retraceMQ, &msg, OS_MESG_BLOCK);
switch ((s32) msg) {
case 666:
nuScRetraceCounter++;
nuScEventBroadcast(&nusched.retraceMsg);
if (nuScPreNMIFlag){
if (beforeResetFrame){
beforeResetFrame--;
} else {
nuScPreNMIFlag |= NU_SC_BEFORE_RESET;
osAfterPreNMI();
osViSetYScale(1.0);
osViBlack(TRUE);
}
}
break;
case 669:
nuScPreNMIFlag = NU_SC_PRENMI_GET;
nuScEventBroadcast(&nusched.prenmiMsg);
if (nuScPreNMIFunc != NULL){
(*nuScPreNMIFunc)();
}
beforeResetFrame = (nusched.frameRate / 2) / nusched.retraceCount - 3;
break;
default:
break;
}
}
}
#else
INCLUDE_ASM(s32, "os/nusys/nuSched", nuScEventHandler, void);
#endif
void nuScEventBroadcast(NUScMsg* msg) { void nuScEventBroadcast(NUScMsg* msg) {
NUScClient* clientList = nusched.clientList; NUScClient* clientList = nusched.clientList;

View File

@ -509,7 +509,7 @@ void pause_map_handle_input(MenuPanel* tab) {
gPauseMapCameraY = -210.0f; gPauseMapCameraY = -210.0f;
} }
if (gPausePressedButtons & B_BUTTON) { if (gPausePressedButtons & BUTTON_B) {
sfx_play_sound(SOUND_MENU_BACK); sfx_play_sound(SOUND_MENU_BACK);
gPauseMenuCurrentTab = 0; gPauseMenuCurrentTab = 0;
return; return;

View File

@ -173,7 +173,7 @@ ApiStatus func_802406C4_AF8014(Evt* script, s32 isInitialCall) {
// fallthrough // fallthrough
case 11: case 11:
temp = D_80246538_kkj_19[D_80246550_kkj_19]; temp = D_80246538_kkj_19[D_80246550_kkj_19];
if (gGameStatusPtr->pressedButtons[0] & A_BUTTON) { if (gGameStatusPtr->pressedButtons[0] & BUTTON_A) {
dgb_08_npcGroup_80246528++; dgb_08_npcGroup_80246528++;
} }
if (dgb_08_npcGroup_80246528 > temp) { if (dgb_08_npcGroup_80246528 > temp) {
@ -210,7 +210,7 @@ ApiStatus func_802406C4_AF8014(Evt* script, s32 isInitialCall) {
return ApiStatus_DONE2; return ApiStatus_DONE2;
} }
D_80246578[D_802465A0++] = gGameStatusPtr->pressedButtons[0] & A_BUTTON; D_80246578[D_802465A0++] = gGameStatusPtr->pressedButtons[0] & BUTTON_A;
if (D_802465A0 >= 10) { if (D_802465A0 >= 10) {
D_802465A0 = 0; D_802465A0 = 0;

View File

@ -66,7 +66,7 @@ void func_80240A6C_BCF65C(void) {
s32 idx; s32 idx;
s32 i; s32 i;
temp_v0->aPressed[temp_v0->unk_1C0] = gGameStatusPtr->pressedButtons[0] & A_BUTTON; temp_v0->aPressed[temp_v0->unk_1C0] = gGameStatusPtr->pressedButtons[0] & BUTTON_A;
temp_v0->unk_1C0++; temp_v0->unk_1C0++;
if (temp_v0->unk_1C0 >= ARRAY_COUNT(temp_v0->aPressed)) { if (temp_v0->unk_1C0 >= ARRAY_COUNT(temp_v0->aPressed)) {
temp_v0->unk_1C0 = 0; temp_v0->unk_1C0 = 0;
@ -384,7 +384,7 @@ moved:
} }
script->varTable[0] = 0; script->varTable[0] = 0;
if (temp_v0->unk_1D8 >= 46 || (gGameStatusPtr->pressedButtons[0] & B_BUTTON)) { if (temp_v0->unk_1D8 >= 46 || (gGameStatusPtr->pressedButtons[0] & BUTTON_B)) {
script->varTable[0] = 1; script->varTable[0] = 1;
return ApiStatus_DONE2; return ApiStatus_DONE2;
} }

View File

@ -767,7 +767,7 @@ ApiStatus func_802BE724_322274(Evt* script, s32 isInitialCall) {
} else { } else {
npc->duration--; npc->duration--;
if (npc->duration != 0) { if (npc->duration != 0) {
if (partnerActionStatus->pressedButtons & (B_BUTTON | D_CBUTTONS) && lakilester_raycast_below()) { if (partnerActionStatus->pressedButtons & (BUTTON_B | D_CBUTTONS) && lakilester_raycast_below()) {
D_802BFF14 = 3; D_802BFF14 = 3;
} }
break; break;
@ -791,7 +791,7 @@ ApiStatus func_802BE724_322274(Evt* script, s32 isInitialCall) {
} }
if (!(playerStatus->flags & PS_FLAGS_HIT_FIRE)) { if (!(playerStatus->flags & PS_FLAGS_HIT_FIRE)) {
if (partnerActionStatus->pressedButtons & (B_BUTTON | D_CBUTTONS)) { if (partnerActionStatus->pressedButtons & (BUTTON_B | D_CBUTTONS)) {
if (lakilester_raycast_below()) { if (lakilester_raycast_below()) {
D_802BFF14 = 3; D_802BFF14 = 3;
} else { } else {

View File

@ -345,7 +345,7 @@ ApiStatus func_802BD754_31D2C4(Evt* script, s32 isInitialCall) {
actionState == ACTION_STATE_RUN || actionState == ACTION_STATE_RUN ||
actionState == ACTION_STATE_LAND) actionState == ACTION_STATE_LAND)
{ {
if (partnerActionStatus->pressedButtons & B_BUTTON) { if (partnerActionStatus->pressedButtons & BUTTON_B) {
D_802BE304 = 2; D_802BE304 = 2;
} }
} }

View File

@ -1,231 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel D_800984C0
.double 0.7142857142857143
.section .text
glabel appendGfx_npc_blur
/* 16238 8003AE38 27BDFF08 */ addiu $sp, $sp, -0xf8
/* 1623C 8003AE3C F7BC00E8 */ sdc1 $f28, 0xe8($sp)
/* 16240 8003AE40 4480E000 */ mtc1 $zero, $f28
/* 16244 8003AE44 F7BA00E0 */ sdc1 $f26, 0xe0($sp)
/* 16248 8003AE48 3C01800A */ lui $at, %hi(D_800984C0)
/* 1624C 8003AE4C D43A84C0 */ ldc1 $f26, %lo(D_800984C0)($at)
/* 16250 8003AE50 AFB000A0 */ sw $s0, 0xa0($sp)
/* 16254 8003AE54 0080802D */ daddu $s0, $a0, $zero
/* 16258 8003AE58 AFB300AC */ sw $s3, 0xac($sp)
/* 1625C 8003AE5C 0000982D */ daddu $s3, $zero, $zero
/* 16260 8003AE60 AFB500B4 */ sw $s5, 0xb4($sp)
/* 16264 8003AE64 0260A82D */ daddu $s5, $s3, $zero
/* 16268 8003AE68 AFB100A4 */ sw $s1, 0xa4($sp)
/* 1626C 8003AE6C 27B10060 */ addiu $s1, $sp, 0x60
/* 16270 8003AE70 AFB700BC */ sw $s7, 0xbc($sp)
/* 16274 8003AE74 27B70020 */ addiu $s7, $sp, 0x20
/* 16278 8003AE78 AFB400B0 */ sw $s4, 0xb0($sp)
/* 1627C 8003AE7C 0260A02D */ daddu $s4, $s3, $zero
/* 16280 8003AE80 AFBF00C0 */ sw $ra, 0xc0($sp)
/* 16284 8003AE84 AFB600B8 */ sw $s6, 0xb8($sp)
/* 16288 8003AE88 AFB200A8 */ sw $s2, 0xa8($sp)
/* 1628C 8003AE8C F7BE00F0 */ sdc1 $f30, 0xf0($sp)
/* 16290 8003AE90 F7B800D8 */ sdc1 $f24, 0xd8($sp)
/* 16294 8003AE94 F7B600D0 */ sdc1 $f22, 0xd0($sp)
/* 16298 8003AE98 F7B400C8 */ sdc1 $f20, 0xc8($sp)
/* 1629C 8003AE9C 8E160020 */ lw $s6, 0x20($s0)
/* 162A0 8003AEA0 3C013FF0 */ lui $at, 0x3ff0
/* 162A4 8003AEA4 4481F800 */ mtc1 $at, $f31
/* 162A8 8003AEA8 4480F000 */ mtc1 $zero, $f30
/* 162AC 8003AEAC 82D20001 */ lb $s2, 1($s6)
/* 162B0 8003AEB0 2652FFFF */ addiu $s2, $s2, -1
.L8003AEB4:
/* 162B4 8003AEB4 06410002 */ bgez $s2, .L8003AEC0
/* 162B8 8003AEB8 26730001 */ addiu $s3, $s3, 1
/* 162BC 8003AEBC 24120013 */ addiu $s2, $zero, 0x13
.L8003AEC0:
/* 162C0 8003AEC0 82C20001 */ lb $v0, 1($s6)
/* 162C4 8003AEC4 1242009C */ beq $s2, $v0, .L8003B138
/* 162C8 8003AEC8 2A620003 */ slti $v0, $s3, 3
/* 162CC 8003AECC 5440FFF9 */ bnel $v0, $zero, .L8003AEB4
/* 162D0 8003AED0 2652FFFF */ addiu $s2, $s2, -1
/* 162D4 8003AED4 0000982D */ daddu $s3, $zero, $zero
/* 162D8 8003AED8 26B50001 */ addiu $s5, $s5, 1
/* 162DC 8003AEDC 2AA20004 */ slti $v0, $s5, 4
/* 162E0 8003AEE0 10400095 */ beqz $v0, .L8003B138
/* 162E4 8003AEE4 26940014 */ addiu $s4, $s4, 0x14
/* 162E8 8003AEE8 24050007 */ addiu $a1, $zero, 7
/* 162EC 8003AEEC 240600FF */ addiu $a2, $zero, 0xff
/* 162F0 8003AEF0 00121080 */ sll $v0, $s2, 2
/* 162F4 8003AEF4 02C21021 */ addu $v0, $s6, $v0
/* 162F8 8003AEF8 C4540004 */ lwc1 $f20, 4($v0)
/* 162FC 8003AEFC C4560054 */ lwc1 $f22, 0x54($v0)
/* 16300 8003AF00 C45800A4 */ lwc1 $f24, 0xa4($v0)
/* 16304 8003AF04 00C0102D */ daddu $v0, $a2, $zero
/* 16308 8003AF08 AFA20010 */ sw $v0, 0x10($sp)
/* 1630C 8003AF0C 24020078 */ addiu $v0, $zero, 0x78
/* 16310 8003AF10 00541023 */ subu $v0, $v0, $s4
/* 16314 8003AF14 AFA20014 */ sw $v0, 0x14($sp)
/* 16318 8003AF18 AFA00018 */ sw $zero, 0x18($sp)
/* 1631C 8003AF1C 8E040024 */ lw $a0, 0x24($s0)
/* 16320 8003AF20 0C0B7A25 */ jal func_802DE894
/* 16324 8003AF24 00C0382D */ daddu $a3, $a2, $zero
/* 16328 8003AF28 4405A000 */ mfc1 $a1, $f20
/* 1632C 8003AF2C 4406B000 */ mfc1 $a2, $f22
/* 16330 8003AF30 4407C000 */ mfc1 $a3, $f24
/* 16334 8003AF34 C6140034 */ lwc1 $f20, 0x34($s0)
/* 16338 8003AF38 0C019E40 */ jal guTranslateF
/* 1633C 8003AF3C 27A40020 */ addiu $a0, $sp, 0x20
/* 16340 8003AF40 C6000048 */ lwc1 $f0, 0x48($s0)
/* 16344 8003AF44 461C0032 */ c.eq.s $f0, $f28
/* 16348 8003AF48 00000000 */ nop
/* 1634C 8003AF4C 4501000B */ bc1t .L8003AF7C
/* 16350 8003AF50 00000000 */ nop
/* 16354 8003AF54 E7BC0010 */ swc1 $f28, 0x10($sp)
/* 16358 8003AF58 8E050048 */ lw $a1, 0x48($s0)
/* 1635C 8003AF5C 4406E000 */ mfc1 $a2, $f28
/* 16360 8003AF60 3C073F80 */ lui $a3, 0x3f80
/* 16364 8003AF64 0C019EC8 */ jal guRotateF
/* 16368 8003AF68 0220202D */ daddu $a0, $s1, $zero
/* 1636C 8003AF6C 0220202D */ daddu $a0, $s1, $zero
/* 16370 8003AF70 27A50020 */ addiu $a1, $sp, 0x20
/* 16374 8003AF74 0C019D80 */ jal guMtxCatF
/* 16378 8003AF78 00A0302D */ daddu $a2, $a1, $zero
.L8003AF7C:
/* 1637C 8003AF7C C6000044 */ lwc1 $f0, 0x44($s0)
/* 16380 8003AF80 461C0032 */ c.eq.s $f0, $f28
/* 16384 8003AF84 00000000 */ nop
/* 16388 8003AF88 4501000B */ bc1t .L8003AFB8
/* 1638C 8003AF8C 00000000 */ nop
/* 16390 8003AF90 E7BC0010 */ swc1 $f28, 0x10($sp)
/* 16394 8003AF94 8E050048 */ lw $a1, 0x48($s0)
/* 16398 8003AF98 4406E000 */ mfc1 $a2, $f28
/* 1639C 8003AF9C 3C073F80 */ lui $a3, 0x3f80
/* 163A0 8003AFA0 0C019EC8 */ jal guRotateF
/* 163A4 8003AFA4 0220202D */ daddu $a0, $s1, $zero
/* 163A8 8003AFA8 0220202D */ daddu $a0, $s1, $zero
/* 163AC 8003AFAC 27A50020 */ addiu $a1, $sp, 0x20
/* 163B0 8003AFB0 0C019D80 */ jal guMtxCatF
/* 163B4 8003AFB4 00A0302D */ daddu $a2, $a1, $zero
.L8003AFB8:
/* 163B8 8003AFB8 C600004C */ lwc1 $f0, 0x4c($s0)
/* 163BC 8003AFBC 461C0032 */ c.eq.s $f0, $f28
/* 163C0 8003AFC0 00000000 */ nop
/* 163C4 8003AFC4 4501000B */ bc1t .L8003AFF4
/* 163C8 8003AFC8 00000000 */ nop
/* 163CC 8003AFCC E7BC0010 */ swc1 $f28, 0x10($sp)
/* 163D0 8003AFD0 8E050048 */ lw $a1, 0x48($s0)
/* 163D4 8003AFD4 4406E000 */ mfc1 $a2, $f28
/* 163D8 8003AFD8 3C073F80 */ lui $a3, 0x3f80
/* 163DC 8003AFDC 0C019EC8 */ jal guRotateF
/* 163E0 8003AFE0 0220202D */ daddu $a0, $s1, $zero
/* 163E4 8003AFE4 0220202D */ daddu $a0, $s1, $zero
/* 163E8 8003AFE8 27A50020 */ addiu $a1, $sp, 0x20
/* 163EC 8003AFEC 0C019D80 */ jal guMtxCatF
/* 163F0 8003AFF0 00A0302D */ daddu $a2, $a1, $zero
.L8003AFF4:
/* 163F4 8003AFF4 C6000054 */ lwc1 $f0, 0x54($s0)
/* 163F8 8003AFF8 46000021 */ cvt.d.s $f0, $f0
/* 163FC 8003AFFC 463A0002 */ mul.d $f0, $f0, $f26
/* 16400 8003B000 00000000 */ nop
/* 16404 8003B004 463E0032 */ c.eq.d $f0, $f30
/* 16408 8003B008 00000000 */ nop
/* 1640C 8003B00C 45000014 */ bc1f .L8003B060
/* 16410 8003B010 00000000 */ nop
/* 16414 8003B014 C6000058 */ lwc1 $f0, 0x58($s0)
/* 16418 8003B018 C6020320 */ lwc1 $f2, 0x320($s0)
/* 1641C 8003B01C 46020002 */ mul.s $f0, $f0, $f2
/* 16420 8003B020 00000000 */ nop
/* 16424 8003B024 46000021 */ cvt.d.s $f0, $f0
/* 16428 8003B028 463A0002 */ mul.d $f0, $f0, $f26
/* 1642C 8003B02C 00000000 */ nop
/* 16430 8003B030 463E0032 */ c.eq.d $f0, $f30
/* 16434 8003B034 00000000 */ nop
/* 16438 8003B038 45000009 */ bc1f .L8003B060
/* 1643C 8003B03C 00000000 */ nop
/* 16440 8003B040 C600005C */ lwc1 $f0, 0x5c($s0)
/* 16444 8003B044 46000021 */ cvt.d.s $f0, $f0
/* 16448 8003B048 463A0002 */ mul.d $f0, $f0, $f26
/* 1644C 8003B04C 00000000 */ nop
/* 16450 8003B050 463E0032 */ c.eq.d $f0, $f30
/* 16454 8003B054 00000000 */ nop
/* 16458 8003B058 4501001C */ bc1t .L8003B0CC
/* 1645C 8003B05C 00000000 */ nop
.L8003B060:
/* 16460 8003B060 C6060054 */ lwc1 $f6, 0x54($s0)
/* 16464 8003B064 460031A1 */ cvt.d.s $f6, $f6
/* 16468 8003B068 463A3182 */ mul.d $f6, $f6, $f26
/* 1646C 8003B06C 00000000 */ nop
/* 16470 8003B070 C604005C */ lwc1 $f4, 0x5c($s0)
/* 16474 8003B074 46002121 */ cvt.d.s $f4, $f4
/* 16478 8003B078 463A2102 */ mul.d $f4, $f4, $f26
/* 1647C 8003B07C 00000000 */ nop
/* 16480 8003B080 C6000058 */ lwc1 $f0, 0x58($s0)
/* 16484 8003B084 C6020320 */ lwc1 $f2, 0x320($s0)
/* 16488 8003B088 46020002 */ mul.s $f0, $f0, $f2
/* 1648C 8003B08C 00000000 */ nop
/* 16490 8003B090 46000021 */ cvt.d.s $f0, $f0
/* 16494 8003B094 463A0002 */ mul.d $f0, $f0, $f26
/* 16498 8003B098 00000000 */ nop
/* 1649C 8003B09C 462031A0 */ cvt.s.d $f6, $f6
/* 164A0 8003B0A0 46202120 */ cvt.s.d $f4, $f4
/* 164A4 8003B0A4 44053000 */ mfc1 $a1, $f6
/* 164A8 8003B0A8 44072000 */ mfc1 $a3, $f4
/* 164AC 8003B0AC 46200020 */ cvt.s.d $f0, $f0
/* 164B0 8003B0B0 44060000 */ mfc1 $a2, $f0
/* 164B4 8003B0B4 0C019DF0 */ jal guScaleF
/* 164B8 8003B0B8 0220202D */ daddu $a0, $s1, $zero
/* 164BC 8003B0BC 0220202D */ daddu $a0, $s1, $zero
/* 164C0 8003B0C0 27A50020 */ addiu $a1, $sp, 0x20
/* 164C4 8003B0C4 0C019D80 */ jal guMtxCatF
/* 164C8 8003B0C8 00A0302D */ daddu $a2, $a1, $zero
.L8003B0CC:
/* 164CC 8003B0CC 8E030000 */ lw $v1, ($s0)
/* 164D0 8003B0D0 3C024000 */ lui $v0, 0x4000
/* 164D4 8003B0D4 00621024 */ and $v0, $v1, $v0
/* 164D8 8003B0D8 5440000E */ bnel $v0, $zero, .L8003B114
/* 164DC 8003B0DC AFB70010 */ sw $s7, 0x10($sp)
/* 164E0 8003B0E0 3C020100 */ lui $v0, 0x100
/* 164E4 8003B0E4 00621024 */ and $v0, $v1, $v0
/* 164E8 8003B0E8 5440FF72 */ bnel $v0, $zero, .L8003AEB4
/* 164EC 8003B0EC 2652FFFF */ addiu $s2, $s2, -1
/* 164F0 8003B0F0 4600A20D */ trunc.w.s $f8, $f20
/* 164F4 8003B0F4 44054000 */ mfc1 $a1, $f8
/* 164F8 8003B0F8 0000302D */ daddu $a2, $zero, $zero
/* 164FC 8003B0FC AFB70010 */ sw $s7, 0x10($sp)
/* 16500 8003B100 8E040024 */ lw $a0, 0x24($s0)
/* 16504 8003B104 0C0B78F6 */ jal spr_draw_npc_sprite
/* 16508 8003B108 00C0382D */ daddu $a3, $a2, $zero
/* 1650C 8003B10C 0800EBAD */ j .L8003AEB4
/* 16510 8003B110 2652FFFF */ addiu $s2, $s2, -1
.L8003B114:
/* 16514 8003B114 3C044000 */ lui $a0, 0x4000
/* 16518 8003B118 34840001 */ ori $a0, $a0, 1
/* 1651C 8003B11C 4600A20D */ trunc.w.s $f8, $f20
/* 16520 8003B120 44054000 */ mfc1 $a1, $f8
/* 16524 8003B124 0000302D */ daddu $a2, $zero, $zero
/* 16528 8003B128 0C0B7710 */ jal spr_draw_player_sprite
/* 1652C 8003B12C 00C0382D */ daddu $a3, $a2, $zero
/* 16530 8003B130 0800EBAD */ j .L8003AEB4
/* 16534 8003B134 2652FFFF */ addiu $s2, $s2, -1
.L8003B138:
/* 16538 8003B138 0C00F4EF */ jal func_8003D3BC
/* 1653C 8003B13C 0200202D */ daddu $a0, $s0, $zero
/* 16540 8003B140 8FBF00C0 */ lw $ra, 0xc0($sp)
/* 16544 8003B144 8FB700BC */ lw $s7, 0xbc($sp)
/* 16548 8003B148 8FB600B8 */ lw $s6, 0xb8($sp)
/* 1654C 8003B14C 8FB500B4 */ lw $s5, 0xb4($sp)
/* 16550 8003B150 8FB400B0 */ lw $s4, 0xb0($sp)
/* 16554 8003B154 8FB300AC */ lw $s3, 0xac($sp)
/* 16558 8003B158 8FB200A8 */ lw $s2, 0xa8($sp)
/* 1655C 8003B15C 8FB100A4 */ lw $s1, 0xa4($sp)
/* 16560 8003B160 8FB000A0 */ lw $s0, 0xa0($sp)
/* 16564 8003B164 D7BE00F0 */ ldc1 $f30, 0xf0($sp)
/* 16568 8003B168 D7BC00E8 */ ldc1 $f28, 0xe8($sp)
/* 1656C 8003B16C D7BA00E0 */ ldc1 $f26, 0xe0($sp)
/* 16570 8003B170 D7B800D8 */ ldc1 $f24, 0xd8($sp)
/* 16574 8003B174 D7B600D0 */ ldc1 $f22, 0xd0($sp)
/* 16578 8003B178 D7B400C8 */ ldc1 $f20, 0xc8($sp)
/* 1657C 8003B17C 03E00008 */ jr $ra
/* 16580 8003B180 27BD00F8 */ addiu $sp, $sp, 0xf8

View File

@ -1,86 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel nuScExecuteAudio
/* 39FE0 8005EBE0 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 39FE4 8005EBE4 AFB40028 */ sw $s4, 0x28($sp)
/* 39FE8 8005EBE8 3C14800E */ lui $s4, %hi(D_800DA444)
/* 39FEC 8005EBEC 2694A444 */ addiu $s4, $s4, %lo(D_800DA444)
/* 39FF0 8005EBF0 AFB30024 */ sw $s3, 0x24($sp)
/* 39FF4 8005EBF4 2693066C */ addiu $s3, $s4, 0x66c
/* 39FF8 8005EBF8 AFB5002C */ sw $s5, 0x2c($sp)
/* 39FFC 8005EBFC 269500A8 */ addiu $s5, $s4, 0xa8
/* 3A000 8005EC00 AFB20020 */ sw $s2, 0x20($sp)
/* 3A004 8005EC04 27B20014 */ addiu $s2, $sp, 0x14
/* 3A008 8005EC08 AFBF0030 */ sw $ra, 0x30($sp)
/* 3A00C 8005EC0C AFB1001C */ sw $s1, 0x1c($sp)
/* 3A010 8005EC10 AFB00018 */ sw $s0, 0x18($sp)
/* 3A014 8005EC14 0280202D */ daddu $a0, $s4, $zero
.L8005EC18:
/* 3A018 8005EC18 27A50010 */ addiu $a1, $sp, 0x10
/* 3A01C 8005EC1C 0C0195BC */ jal osRecvMesg
/* 3A020 8005EC20 24060001 */ addiu $a2, $zero, 1
/* 3A024 8005EC24 3C02800A */ lui $v0, %hi(nuScPreNMIFlag)
/* 3A028 8005EC28 9042A5B0 */ lbu $v0, %lo(nuScPreNMIFlag)($v0)
/* 3A02C 8005EC2C 30420002 */ andi $v0, $v0, 2
/* 3A030 8005EC30 14400031 */ bnez $v0, .L8005ECF8
/* 3A034 8005EC34 00000000 */ nop
/* 3A038 8005EC38 0C018634 */ jal osWritebackDCacheAll
/* 3A03C 8005EC3C 0000802D */ daddu $s0, $zero, $zero
/* 3A040 8005EC40 8E910668 */ lw $s1, 0x668($s4)
/* 3A044 8005EC44 1220000B */ beqz $s1, .L8005EC74
/* 3A048 8005EC48 00000000 */ nop
/* 3A04C 8005EC4C 0C019714 */ jal osSpTaskYield
/* 3A050 8005EC50 24100002 */ addiu $s0, $zero, 2
/* 3A054 8005EC54 268400A8 */ addiu $a0, $s4, 0xa8
/* 3A058 8005EC58 27A50014 */ addiu $a1, $sp, 0x14
/* 3A05C 8005EC5C 0C0195BC */ jal osRecvMesg
/* 3A060 8005EC60 24060001 */ addiu $a2, $zero, 1
/* 3A064 8005EC64 0C01971C */ jal osSpTaskYielded
/* 3A068 8005EC68 26240010 */ addiu $a0, $s1, 0x10
/* 3A06C 8005EC6C 54400001 */ bnel $v0, $zero, .L8005EC74
/* 3A070 8005EC70 24100001 */ addiu $s0, $zero, 1
.L8005EC74:
/* 3A074 8005EC74 8FA20010 */ lw $v0, 0x10($sp)
/* 3A078 8005EC78 24440010 */ addiu $a0, $v0, 0x10
/* 3A07C 8005EC7C 0C019684 */ jal osSpTaskLoad
/* 3A080 8005EC80 AE620000 */ sw $v0, ($s3)
/* 3A084 8005EC84 8FA40010 */ lw $a0, 0x10($sp)
/* 3A088 8005EC88 0C019707 */ jal osSpTaskStartGo
/* 3A08C 8005EC8C 24840010 */ addiu $a0, $a0, 0x10
/* 3A090 8005EC90 02A0202D */ daddu $a0, $s5, $zero
/* 3A094 8005EC94 0240282D */ daddu $a1, $s2, $zero
/* 3A098 8005EC98 0C0195BC */ jal osRecvMesg
/* 3A09C 8005EC9C 24060001 */ addiu $a2, $zero, 1
/* 3A0A0 8005ECA0 8E620004 */ lw $v0, 4($s3)
/* 3A0A4 8005ECA4 10400005 */ beqz $v0, .L8005ECBC
/* 3A0A8 8005ECA8 AE600000 */ sw $zero, ($s3)
/* 3A0AC 8005ECAC 2664FAAC */ addiu $a0, $s3, -0x554
/* 3A0B0 8005ECB0 0240282D */ daddu $a1, $s2, $zero
/* 3A0B4 8005ECB4 0C019608 */ jal osSendMesg
/* 3A0B8 8005ECB8 24060001 */ addiu $a2, $zero, 1
.L8005ECBC:
/* 3A0BC 8005ECBC 24020001 */ addiu $v0, $zero, 1
/* 3A0C0 8005ECC0 16020008 */ bne $s0, $v0, .L8005ECE4
/* 3A0C4 8005ECC4 24020002 */ addiu $v0, $zero, 2
/* 3A0C8 8005ECC8 26300010 */ addiu $s0, $s1, 0x10
/* 3A0CC 8005ECCC 0C019684 */ jal osSpTaskLoad
/* 3A0D0 8005ECD0 0200202D */ daddu $a0, $s0, $zero
/* 3A0D4 8005ECD4 0C019707 */ jal osSpTaskStartGo
/* 3A0D8 8005ECD8 0200202D */ daddu $a0, $s0, $zero
/* 3A0DC 8005ECDC 08017B3E */ j .L8005ECF8
/* 3A0E0 8005ECE0 00000000 */ nop
.L8005ECE4:
/* 3A0E4 8005ECE4 16020004 */ bne $s0, $v0, .L8005ECF8
/* 3A0E8 8005ECE8 02A0202D */ daddu $a0, $s5, $zero
/* 3A0EC 8005ECEC 0240282D */ daddu $a1, $s2, $zero
/* 3A0F0 8005ECF0 0C019608 */ jal osSendMesg
/* 3A0F4 8005ECF4 24060001 */ addiu $a2, $zero, 1
.L8005ECF8:
/* 3A0F8 8005ECF8 8FA20010 */ lw $v0, 0x10($sp)
/* 3A0FC 8005ECFC 8C440050 */ lw $a0, 0x50($v0)
/* 3A100 8005ED00 8C450054 */ lw $a1, 0x54($v0)
/* 3A104 8005ED04 0C019608 */ jal osSendMesg
/* 3A108 8005ED08 24060001 */ addiu $a2, $zero, 1
/* 3A10C 8005ED0C 08017B06 */ j .L8005EC18
/* 3A110 8005ED10 0280202D */ daddu $a0, $s4, $zero

View File

@ -1,78 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel nuScExecuteGraphics
/* 3A114 8005ED14 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 3A118 8005ED18 AFB00018 */ sw $s0, 0x18($sp)
/* 3A11C 8005ED1C 3C10800E */ lui $s0, %hi(D_800DA47C)
/* 3A120 8005ED20 2610A47C */ addiu $s0, $s0, %lo(D_800DA47C)
/* 3A124 8005ED24 AFB1001C */ sw $s1, 0x1c($sp)
/* 3A128 8005ED28 27B10014 */ addiu $s1, $sp, 0x14
/* 3A12C 8005ED2C AFBF0020 */ sw $ra, 0x20($sp)
/* 3A130 8005ED30 0200202D */ daddu $a0, $s0, $zero
.L8005ED34:
/* 3A134 8005ED34 27A50010 */ addiu $a1, $sp, 0x10
/* 3A138 8005ED38 0C0195BC */ jal osRecvMesg
/* 3A13C 8005ED3C 24060001 */ addiu $a2, $zero, 1
/* 3A140 8005ED40 3C02800A */ lui $v0, %hi(nuScPreNMIFlag)
/* 3A144 8005ED44 9042A5B0 */ lbu $v0, %lo(nuScPreNMIFlag)($v0)
/* 3A148 8005ED48 30420002 */ andi $v0, $v0, 2
/* 3A14C 8005ED4C 14400032 */ bnez $v0, .L8005EE18
/* 3A150 8005ED50 00000000 */ nop
/* 3A154 8005ED54 0C017C48 */ jal nuScWaitTaskReady
/* 3A158 8005ED58 8FA40010 */ lw $a0, 0x10($sp)
/* 3A15C 8005ED5C 0C018250 */ jal osSetIntMask
/* 3A160 8005ED60 24040001 */ addiu $a0, $zero, 1
/* 3A164 8005ED64 8E030634 */ lw $v1, 0x634($s0)
/* 3A168 8005ED68 1060000C */ beqz $v1, .L8005ED9C
/* 3A16C 8005ED6C 0040202D */ daddu $a0, $v0, $zero
/* 3A170 8005ED70 8FA20010 */ lw $v0, 0x10($sp)
/* 3A174 8005ED74 0C018250 */ jal osSetIntMask
/* 3A178 8005ED78 AE020638 */ sw $v0, 0x638($s0)
/* 3A17C 8005ED7C 260400E0 */ addiu $a0, $s0, 0xe0
/* 3A180 8005ED80 27A50014 */ addiu $a1, $sp, 0x14
/* 3A184 8005ED84 0C0195BC */ jal osRecvMesg
/* 3A188 8005ED88 24060001 */ addiu $a2, $zero, 1
/* 3A18C 8005ED8C 0C018250 */ jal osSetIntMask
/* 3A190 8005ED90 24040001 */ addiu $a0, $zero, 1
/* 3A194 8005ED94 0040202D */ daddu $a0, $v0, $zero
/* 3A198 8005ED98 AE000638 */ sw $zero, 0x638($s0)
.L8005ED9C:
/* 3A19C 8005ED9C 0C018250 */ jal osSetIntMask
/* 3A1A0 8005EDA0 00000000 */ nop
/* 3A1A4 8005EDA4 0C018250 */ jal osSetIntMask
/* 3A1A8 8005EDA8 24040001 */ addiu $a0, $zero, 1
/* 3A1AC 8005EDAC 8FA30010 */ lw $v1, 0x10($sp)
/* 3A1B0 8005EDB0 0040202D */ daddu $a0, $v0, $zero
/* 3A1B4 8005EDB4 0C018250 */ jal osSetIntMask
/* 3A1B8 8005EDB8 AE030630 */ sw $v1, 0x630($s0)
/* 3A1BC 8005EDBC 8FA40010 */ lw $a0, 0x10($sp)
/* 3A1C0 8005EDC0 0C019684 */ jal osSpTaskLoad
/* 3A1C4 8005EDC4 24840010 */ addiu $a0, $a0, 0x10
/* 3A1C8 8005EDC8 8FA40010 */ lw $a0, 0x10($sp)
/* 3A1CC 8005EDCC 0C019707 */ jal osSpTaskStartGo
/* 3A1D0 8005EDD0 24840010 */ addiu $a0, $a0, 0x10
/* 3A1D4 8005EDD4 26040070 */ addiu $a0, $s0, 0x70
/* 3A1D8 8005EDD8 0220282D */ daddu $a1, $s1, $zero
/* 3A1DC 8005EDDC 0C0195BC */ jal osRecvMesg
/* 3A1E0 8005EDE0 24060001 */ addiu $a2, $zero, 1
/* 3A1E4 8005EDE4 0C018250 */ jal osSetIntMask
/* 3A1E8 8005EDE8 24040001 */ addiu $a0, $zero, 1
/* 3A1EC 8005EDEC 0040202D */ daddu $a0, $v0, $zero
/* 3A1F0 8005EDF0 0C018250 */ jal osSetIntMask
/* 3A1F4 8005EDF4 AE000630 */ sw $zero, 0x630($s0)
/* 3A1F8 8005EDF8 8FA20010 */ lw $v0, 0x10($sp)
/* 3A1FC 8005EDFC 8C420008 */ lw $v0, 8($v0)
/* 3A200 8005EE00 30420002 */ andi $v0, $v0, 2
/* 3A204 8005EE04 14400004 */ bnez $v0, .L8005EE18
/* 3A208 8005EE08 260400A8 */ addiu $a0, $s0, 0xa8
/* 3A20C 8005EE0C 0220282D */ daddu $a1, $s1, $zero
/* 3A210 8005EE10 0C0195BC */ jal osRecvMesg
/* 3A214 8005EE14 24060001 */ addiu $a2, $zero, 1
.L8005EE18:
/* 3A218 8005EE18 8FA50010 */ lw $a1, 0x10($sp)
/* 3A21C 8005EE1C 8CA40050 */ lw $a0, 0x50($a1)
/* 3A220 8005EE20 0C019608 */ jal osSendMesg
/* 3A224 8005EE24 24060001 */ addiu $a2, $zero, 1
/* 3A228 8005EE28 08017B4D */ j .L8005ED34
/* 3A22C 8005EE2C 0200202D */ daddu $a0, $s0, $zero

View File

@ -357,7 +357,7 @@ segments:
- [0x6FA30, .data, os/seteventmesg] - [0x6FA30, .data, os/seteventmesg]
- [0x6FA40, .data, os/siacs] - [0x6FA40, .data, os/siacs]
- [0x6FA50, .data, os/setthreadpri] - [0x6FA50, .data, os/setthreadpri]
- [0x6FA70, .data, os/timerintr] # libultra data - [0x6FA70, .data, os/timerintr]
- [auto, .data, os/vimgr] - [auto, .data, os/vimgr]
- [auto, .data, os/vitbl] - [auto, .data, os/vitbl]
- [auto, .data, os/guRotate] - [auto, .data, os/guRotate]