diff --git a/include/structs.h b/include/structs.h index 023b0166..b38fb70a 100644 --- a/include/structs.h +++ b/include/structs.h @@ -251,7 +251,7 @@ typedef struct struct_11_s{ f32 unk4; s32 unk8; s32 unkC; - s16 unk10; //trackId + s16 track_id; //trackId s16 unk12; u8 unk14; u8 unk15; diff --git a/src/core1/code_1BE90.c b/src/core1/code_1BE90.c index 65331693..be7cb5f5 100644 --- a/src/core1/code_1BE90.c +++ b/src/core1/code_1BE90.c @@ -24,17 +24,24 @@ CoMusic *D_80276E30 = NULL; //active track ptr int D_80276E34 = 0; /* .code */ -CoMusic *func_802598B0(enum comusic_e track_id) { +/** + * @brief returns a pointer to the CoMusic struct with the corresponding track_id + * if it exists OR the first free CoMusic struct. + * + * @param track_id + * @return CoMusic* + */ +CoMusic *__find_track(enum comusic_e track_id) { CoMusic *iMusPtr; CoMusic *freeSlotPtr; freeSlotPtr = NULL; for(iMusPtr = D_80276E30 + 1; iMusPtr < D_80276E30 + 5; iMusPtr++) { - if (track_id == iMusPtr->unk10) { + if (track_id == iMusPtr->track_id) { return iMusPtr; } if (freeSlotPtr == 0) { - if ((s32) iMusPtr->unk10 < 0) { + if ((s32) iMusPtr->track_id < 0) { freeSlotPtr = iMusPtr; } } @@ -61,8 +68,8 @@ void func_80259994(CoMusic *this, s32 arg1){ } void func_802599B4(CoMusic *this){ - func_80259994(this, func_80250034(this->unk10)); - this->unk10 = -1; + func_80259994(this, func_80250034(this->track_id)); + this->track_id = -1; this->unk14 = 0; this->unk15 = 0; func_8024FC1C(this - D_80276E30, -1); @@ -77,7 +84,7 @@ void comusicPlayer_init(void){ D_80276E30 = (CoMusic *) malloc(6*sizeof(CoMusic)); for(iPtr = D_80276E30; iPtr < D_80276E30 + 6; iPtr++){ - iPtr->unk10 = -1; + iPtr->track_id = -1; iPtr->unk8 = 0; iPtr->unk12 = 0; iPtr->unkC = 0; @@ -105,12 +112,11 @@ void comusicPlayer_free(void){ D_80276E30 = NULL; } -//comusic_count -s32 func_80259B8C(void){ +s32 comusic_active_track_count(void){ CoMusic * iPtr; s32 cnt = 0; for(iPtr = D_80276E30; iPtr < D_80276E30 + 6; iPtr++){ - if(iPtr->unk10 >= 0) + if(iPtr->track_id >= 0) cnt++; } return cnt; @@ -124,11 +130,11 @@ void comusicPlayer_update(void) { dt = time_getDelta(); for(var_s0 = D_80276E30; var_s0 < &D_80276E30[6]; var_s0++){ - if (var_s0->unk10 >= 0) { + if (var_s0->track_id >= 0) { temp_lo = var_s0 - D_80276E30; var_s0->unk4 = ml_min_f(var_s0->unk4 + dt, 600.0f); if ((var_s0->unk4 > 1.0f) && func_80250074(temp_lo)) { - func_8025A7DC(var_s0->unk10); + func_8025A7DC(var_s0->track_id); } } } @@ -138,7 +144,7 @@ void comusicPlayer_update(void) { D_80276E34 = FALSE; for(var_s0 = D_80276E30; var_s0 < &D_80276E30[6]; var_s0++){ - if (var_s0->unk10 >= 0) { + if (var_s0->track_id >= 0) { if (var_s0->unk12 != 0) { temp_lo = var_s0 - D_80276E30; if (var_s0->unk0 > 0.0f) { @@ -212,8 +218,8 @@ void func_80259F7C(CoMusic *self, s32 *arg1, s32 *arg2, s32 *arg3) { if (var_s2 < 0) { temp_v0 = (struct12s *)freelist_at(self->unk18, 1); - if (temp_v0->unk0 < func_80250034(self->unk10)) { - var_s2 = func_80250034(self->unk10); + if (temp_v0->unk0 < func_80250034(self->track_id)) { + var_s2 = func_80250034(self->track_id); } else{ var_s2 = temp_v0->unk0; @@ -245,11 +251,11 @@ void func_80259F7C(CoMusic *self, s32 *arg1, s32 *arg2, s32 *arg3) { } void func_8025A104(enum comusic_e arg0, s32 arg1){ - if (arg0 != D_80276E30[0].unk10){ + if (arg0 != D_80276E30[0].track_id){ func_8024FC1C(0, arg0); } func_8024FD28(0, (s16)arg1); - D_80276E30[0].unk10 = (s16) arg0; + D_80276E30[0].track_id = (s16) arg0; D_80276E30[0].unk8 = arg1; D_80276E30[0].unk0 = 0.0f; D_80276E30[0].unk12 = 0; @@ -260,9 +266,9 @@ void func_8025A104(enum comusic_e arg0, s32 arg1){ void func_8025A1A8(enum comusic_e arg0){ - if (arg0 != D_80276E30[0].unk10){ + if (arg0 != D_80276E30[0].track_id){ func_8024FC1C(0, arg0); - D_80276E30[0].unk10 = (s16) arg0; + D_80276E30[0].track_id = (s16) arg0; D_80276E30[0].unk8 = func_80250034(arg0); D_80276E30[0].unk0 = 0.0f; D_80276E30[0].unk12 = 0; @@ -276,9 +282,9 @@ void func_8025A23C(s32 arg0){ CoMusic *music = &D_80276E30[5]; s32 temp_v0; - if (arg0 != music->unk10){ + if (arg0 != music->track_id){ func_8024FC1C(5, arg0); - music->unk10 = (s16) arg0; + music->track_id = (s16) arg0; temp_v0 = func_80250034(arg0); music->unk8 = temp_v0; music->unk12 = 0; @@ -302,7 +308,7 @@ void func_8025A2FC(s32 arg0, s32 arg1){ func_8025A55C(arg0, arg1, 1); for (i = 1; i < 5; i++){ - s16 val = (i + D_80276E30)->unk10; // Doesn't match with D_80276E30[i] + s16 val = (i + D_80276E30)->track_id; // Doesn't match with D_80276E30[i] if (val >= 0){ func_8025ABB8(val, arg0, arg1, 1); } @@ -317,8 +323,8 @@ void func_8025A388(s32 arg0, s32 arg1) { } for (i = 1; i < 5; i++){ CoMusic *current = (i + D_80276E30); // Doesn't match with D_80276E30[i] - if (current->unk10 >= 0 && current->unk14 == 0){ - func_8025ABB8(current->unk10, arg0, arg1, 1); + if (current->track_id >= 0 && current->unk14 == 0){ + func_8025ABB8(current->track_id, arg0, arg1, 1); } } } @@ -328,7 +334,7 @@ void func_8025A430(s32 arg0, s32 arg1, s32 arg2){ func_8025A55C(arg0, arg1, arg2); for (i = 1; i < 5; i++){ - s16 val = (i + D_80276E30)->unk10; // Doesn't match with D_80276E30[i] + s16 val = (i + D_80276E30)->track_id; // Doesn't match with D_80276E30[i] if (val >= 0){ func_8025ABB8(val, arg0, arg1, arg2); } @@ -336,7 +342,7 @@ void func_8025A430(s32 arg0, s32 arg1, s32 arg2){ } void func_8025A4C4(s32 arg0, s32 arg1, s32 *arg2){ - if(D_80276E30[0].unk10 >= 0){ + if(D_80276E30[0].track_id >= 0){ func_80259F7C(&D_80276E30[0], &arg0, &arg1, arg2); if(arg0 != D_80276E30[0].unk8){ if(D_80276E30[0].unk8 < arg0){ @@ -368,21 +374,22 @@ void func_8025A5AC(enum comusic_e comusic_id, s32 arg1, s32 arg2){ arg1 = func_80250034(comusic_id); } - tmp_a2 = func_802598B0(comusic_id); + tmp_a2 = __find_track(comusic_id); if(tmp_a2 == NULL) return; sp20 = (tmp_a2 - D_80276E30); - if(tmp_a2->unk10 < 0 || arg2){ + if(tmp_a2->track_id < 0 || arg2){ switch(comusic_id){ case COMUSIC_15_EXTRA_LIFE_COLLECTED: - if(map_get() != MAP_10_BGS_MR_VILE){ + if(map_get() == MAP_10_BGS_MR_VILE){ + break; + } case COMUSIC_3B_MINIGAME_VICTORY: case COMUSIC_3C_MINIGAME_LOSS: - func_8025AE50(4000, 2.0f); - }//L8025A668 + func_8025AE50(4000, 2.0f); } - tmp_a2->unk10 = comusic_id; + tmp_a2->track_id = comusic_id; tmp_a2->unk12 = 0; tmp_a2->unk15 = 0; tmp_a2->unk4 = 0.0f; @@ -407,13 +414,13 @@ void func_8025A70C(enum comusic_e track_id){ CoMusic *trackPtr; s32 indx; - trackPtr = func_802598B0(track_id); + trackPtr = __find_track(track_id); if(trackPtr == NULL) return; indx = trackPtr - D_80276E30; - if(trackPtr->unk10 < 0){ - trackPtr->unk10 = track_id; + if(trackPtr->track_id < 0){ + trackPtr->track_id = track_id; trackPtr->unk12 = 0; trackPtr->unk4 = 0.0f; func_8024FC1C( indx, track_id); @@ -430,8 +437,8 @@ void func_8025A788(enum comusic_e comusic_id, f32 delay1, f32 delay2){ void func_8025A7DC(enum comusic_e track_id){ CoMusic *trackPtr; - trackPtr = func_802598B0(track_id); - if (trackPtr != NULL && trackPtr->unk10 >= 0){ + trackPtr = __find_track(track_id); + if (trackPtr != NULL && trackPtr->track_id >= 0){ func_802599B4(trackPtr); } } @@ -447,7 +454,7 @@ s32 func_8025A818(void){ s32 func_8025A864(enum comusic_e track_id){ CoMusic *trackPtr; - trackPtr = func_802598B0(track_id); + trackPtr = __find_track(track_id); if (trackPtr != NULL && trackPtr->unkC == 0 && trackPtr->unk8 <= 0){ func_802599B4(trackPtr); return 1; @@ -458,14 +465,14 @@ s32 func_8025A864(enum comusic_e track_id){ void func_8025A8B8(enum comusic_e track_id, s32 arg1){ CoMusic *trackPtr; - trackPtr = func_802598B0(track_id); + trackPtr = __find_track(track_id); if (trackPtr != NULL){ trackPtr->unk14 = arg1; } } void func_8025A8E4(s32 arg0) { - if (D_80276E30[0].unk10 >= 0) { + if (D_80276E30[0].track_id >= 0) { D_80276E30[0].unk14 = arg0; } } @@ -474,7 +481,7 @@ void func_8025A904(void){ CoMusic *trackPtr = &D_80276E30[0]; while (trackPtr < &D_80276E30[6]){ - if (trackPtr->unk10 >= 0){ + if (trackPtr->track_id >= 0){ func_802599B4(trackPtr); } trackPtr++; @@ -486,7 +493,7 @@ void func_8025A96C(void){ CoMusic *iPtr; for(iPtr = &D_80276E30[1]; iPtr < &D_80276E30[6]; iPtr++){ - if(iPtr->unk10 >= 0){ + if(iPtr->track_id >= 0){ func_802599B4(iPtr); } } @@ -497,7 +504,7 @@ void func_8025A9D4(void){ CoMusic *iPtr; for(iPtr = &D_80276E30[0]; iPtr < &D_80276E30[6]; iPtr++){ - if(iPtr->unk10 >= 0 && !iPtr->unk14){ + if(iPtr->track_id >= 0 && !iPtr->unk14){ func_802599B4(iPtr); } } @@ -508,7 +515,7 @@ void func_8025AA48(void){ CoMusic *iPtr; for(iPtr = &D_80276E30[1]; iPtr < &D_80276E30[6]; iPtr++){ - if(iPtr->unk10 >= 0 && !iPtr->unk14){ + if(iPtr->track_id >= 0 && !iPtr->unk14){ func_802599B4(iPtr); } } @@ -518,7 +525,7 @@ void func_8025AA48(void){ void func_8025AABC(enum comusic_e track_id){ CoMusic *trackPtr; - if(trackPtr = func_802598B0(track_id)){ + if(trackPtr = __find_track(track_id)){ trackPtr->unk15 = 1; if(!trackPtr->unk8) func_802599B4(trackPtr); @@ -541,32 +548,34 @@ void comusic_8025AB78(enum comusic_e comusic_id, s32 arg1, s32 arg2, s32 arg3){ } void func_8025ABB8(enum comusic_e comusic_id, s32 arg1, s32 arg2, s32 arg3){ - func_8025AC7C(comusic_id, arg1, arg2, 0.0f, (s32)&(func_802598B0(comusic_id)->unk1C[arg3]), "comusic.c", 0x3aa); + func_8025AC7C(comusic_id, arg1, arg2, 0.0f, (s32)&(__find_track(comusic_id)->unk1C[arg3]), "comusic.c", 0x3aa); } void func_8025AC20(enum comusic_e comusic_id, s32 arg1, s32 arg2, f32 arg3, char* arg4, s32 char5){ - func_8025AC7C(comusic_id, arg1, arg2, 0.0f, (s32) func_802598B0(comusic_id)->unk1C, "comusic.c", 0x3b1); + func_8025AC7C(comusic_id, arg1, arg2, 0.0f, (s32) __find_track(comusic_id)->unk1C, "comusic.c", 0x3b1); } void func_8025AC7C(enum comusic_e comusic_id, s32 arg1, s32 arg2, f32 arg3, s32 arg4, char* arg5, s32 arg6){ CoMusic *trackPtr; - u32 sp24; + u32 slot_index; - trackPtr = func_802598B0(comusic_id); + //get track location + trackPtr = __find_track(comusic_id); if(trackPtr == NULL) return; - if(trackPtr->unk10 < 0){ //Track not ready + //check if track is loaded in slot + if(trackPtr->track_id < 0){ //Track not loaded if(arg1 == 0) return; - sp24 = (trackPtr - D_80276E30); - func_8024FC1C(sp24, comusic_id); - trackPtr->unk10 = comusic_id; + slot_index = (trackPtr - D_80276E30); + func_8024FC1C(slot_index, comusic_id); + trackPtr->track_id = comusic_id; trackPtr->unk8 = 0; trackPtr->unk15 = 0; trackPtr->unk4 = 0.0f; func_80259994(trackPtr, 0); - func_8024FD28(sp24, 0); + func_8024FD28(slot_index, 0); } func_80259F7C(trackPtr,&arg1, &arg2, arg4); trackPtr->unk0 = arg3; @@ -578,17 +587,17 @@ void func_8025AC7C(enum comusic_e comusic_id, s32 arg1, s32 arg2, f32 arg3, s32 //comusic_trackQueued int func_8025AD7C(enum comusic_e arg0){ - CoMusic * trackPtr = func_802598B0(arg0); - return (trackPtr == NULL || trackPtr->unk10 == -1)? 0 : 1; + CoMusic * trackPtr = __find_track(arg0); + return (trackPtr == NULL || trackPtr->track_id == -1)? 0 : 1; } //comusic_isPrimaryTrack int func_8025ADBC(enum comusic_e arg0){ - return D_80276E30[0].unk10 == arg0; + return D_80276E30[0].track_id == arg0; } s32 func_8025ADD4(enum comusic_e id){ - CoMusic * ptr = func_802598B0(id); + CoMusic * ptr = __find_track(id); return ptr - D_80276E30; } @@ -603,7 +612,7 @@ void func_8025AE50(s32 arg0, f32 arg1){ } void func_8025AEA0(enum comusic_e track_id, s32 arg1){ - CoMusic *ptr = func_802598B0(track_id); + CoMusic *ptr = __find_track(track_id); if(!ptr) return; func_8024FDDC(ptr - D_80276E30, arg1); diff --git a/src/core1/code_EAF0.c b/src/core1/code_EAF0.c index 2d455ee6..5ea939c3 100644 --- a/src/core1/code_EAF0.c +++ b/src/core1/code_EAF0.c @@ -19,11 +19,11 @@ f32 viewportPosition[3]; f32 viewportRotation[3]; f32 D_80280ECC; f32 D_80280ED0[4][4]; -Vp D_80280F10[8]; +Vp s_viewport_stack[8]; int D_80280F90; f32 D_80280F98[4][4]; Mtx D_80280FD8; -s32 D_80281018; //viewport indx +s32 s_viewport_stack_index; //viewport indx @@ -34,7 +34,7 @@ void func_8024C964(Gfx **, Mtx **, f32, f32); void func_8024CD7C(int); void viewport_set_position_f3(f32, f32, f32); void viewport_set_rotation_f3(f32, f32, f32); -void func_8024CE60(f32, f32); +void viewport_set_near_far(f32, f32); void func_8024CE74(s32 arg0, s32 arg1, s32 arg2, s32 arg3); void viewport_set_field_of_view(f32); @@ -88,7 +88,7 @@ void viewport_get_rotation_f3(f32 *pitch, f32 *yaw, f32 *roll){ } void func_8024C7B8(Gfx **gfx, Mtx **mtx){ - gSPViewport((*gfx)++, &D_80280F10[D_80281018]); + gSPViewport((*gfx)++, &s_viewport_stack[s_viewport_stack_index]); guOrtho(*mtx, -(2*(f32)framebuffer_width), (2*(f32)framebuffer_width), -(2*(f32)framebuffer_height), (2*(f32)framebuffer_height), 1.0f, 20.0f, 1.0f); gSPMatrix((*gfx)++, OS_K0_TO_PHYSICAL((*mtx)++), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); @@ -98,7 +98,7 @@ void func_8024C7B8(Gfx **gfx, Mtx **mtx){ } void func_8024C904(Gfx **gfx, Mtx **mtx){ - gSPViewport((*gfx)++, &D_80280F10[D_80281018]); + gSPViewport((*gfx)++, &s_viewport_stack[s_viewport_stack_index]); func_8024C964(gfx, mtx, s_viewport_near, s_viewport_far); } @@ -134,7 +134,7 @@ void func_8024CBD4(Gfx **gfx, Mtx **mtx){ func_8024C964(gfx, mtx, s_viewport_near, s_viewport_far); } -void func_8024CC00(void){} +void viewport_debug(void){} void func_8024CC08(f32 arg0){ if(90.0f < arg0) arg0 = 90.0f; @@ -150,12 +150,12 @@ void func_8024CC5C(void){ func_8024CE74((s32) ((f32)framebuffer_width/2), (s32) ((f32)framebuffer_height/2), (s32) ((f32)framebuffer_width/2), (s32) ((f32)framebuffer_height/2)); } -void func_8024CCC4(void){ +void viewport_reset(void){ func_8024CD7C(1); viewport_set_position_f3(0.0f, 0.0f, 0.0f); viewport_set_rotation_f3(0.0f, 0.0f, 0.0f); func_8024CC08(40.0f); - func_8024CE60(1.0f, 10000.0f); + viewport_set_near_far(1.0f, 10000.0f); func_8024CC5C(); viewport_set_field_of_view(VIEWPORT_FOVY_DEFAULT); mlMtxIdent(); @@ -194,35 +194,35 @@ void viewport_set_rotation_f3(f32 pitch, f32 yaw, f32 roll){ viewportRotation[2] = roll; } -void func_8024CE60(f32 near, f32 far){ +void viewport_set_near_far(f32 near, f32 far){ s_viewport_near = near; s_viewport_far = far; } void func_8024CE74(s32 arg0, s32 arg1, s32 arg2, s32 arg3){ - D_80281018 = (D_80281018 + 1) % 8; - D_80280F10[D_80281018].vp.vscale[0] = arg0 << 2; - D_80280F10[D_80281018].vp.vscale[1] = arg1 << 2; - D_80280F10[D_80281018].vp.vscale[2] = 0x1ff; - D_80280F10[D_80281018].vp.vscale[3] = 0; - D_80280F10[D_80281018].vp.vtrans[0] = arg2 << 2; - D_80280F10[D_80281018].vp.vtrans[1] = arg3 << 2; - D_80280F10[D_80281018].vp.vtrans[2] = 0x1ff; - D_80280F10[D_80281018].vp.vtrans[3] = 0; - osWritebackDCache(&D_80280F10[D_80281018], sizeof(Vp)*8); + s_viewport_stack_index = (s_viewport_stack_index + 1) % 8; + s_viewport_stack[s_viewport_stack_index].vp.vscale[0] = arg0 << 2; + s_viewport_stack[s_viewport_stack_index].vp.vscale[1] = arg1 << 2; + s_viewport_stack[s_viewport_stack_index].vp.vscale[2] = 0x1ff; + s_viewport_stack[s_viewport_stack_index].vp.vscale[3] = 0; + s_viewport_stack[s_viewport_stack_index].vp.vtrans[0] = arg2 << 2; + s_viewport_stack[s_viewport_stack_index].vp.vtrans[1] = arg3 << 2; + s_viewport_stack[s_viewport_stack_index].vp.vtrans[2] = 0x1ff; + s_viewport_stack[s_viewport_stack_index].vp.vtrans[3] = 0; + osWritebackDCache(&s_viewport_stack[s_viewport_stack_index], sizeof(Vp)*8); } void func_8024CF10(f32 arg0, f32 arg1, f32 arg2, f32 arg3){ - D_80281018 = (D_80281018 + 1) % 8; - D_80280F10[D_80281018].vp.vscale[0] = arg0*4; - D_80280F10[D_80281018].vp.vscale[1] = arg1*4; - D_80280F10[D_80281018].vp.vscale[2] = 0x1ff; - D_80280F10[D_80281018].vp.vscale[3] = 0; - D_80280F10[D_80281018].vp.vtrans[0] = arg2*4; - D_80280F10[D_80281018].vp.vtrans[1] = arg3*4; - D_80280F10[D_80281018].vp.vtrans[2] = 0x1ff; - D_80280F10[D_80281018].vp.vtrans[3] = 0; - osWritebackDCache(&D_80280F10[D_80281018], sizeof(Vp)*8); + s_viewport_stack_index = (s_viewport_stack_index + 1) % 8; + s_viewport_stack[s_viewport_stack_index].vp.vscale[0] = arg0*4; + s_viewport_stack[s_viewport_stack_index].vp.vscale[1] = arg1*4; + s_viewport_stack[s_viewport_stack_index].vp.vscale[2] = 0x1ff; + s_viewport_stack[s_viewport_stack_index].vp.vscale[3] = 0; + s_viewport_stack[s_viewport_stack_index].vp.vtrans[0] = arg2*4; + s_viewport_stack[s_viewport_stack_index].vp.vtrans[1] = arg3*4; + s_viewport_stack[s_viewport_stack_index].vp.vtrans[2] = 0x1ff; + s_viewport_stack[s_viewport_stack_index].vp.vtrans[3] = 0; + osWritebackDCache(&s_viewport_stack[s_viewport_stack_index], sizeof(Vp)*8); } void viewport_update(void){ diff --git a/src/core2/ba/marker.c b/src/core2/ba/marker.c index 3e3e42a1..efcb1931 100644 --- a/src/core2/ba/marker.c +++ b/src/core2/ba/marker.c @@ -892,7 +892,7 @@ void baMarker_update(void){ if ((D_8037BF88 != 0)){ temp_s0 = func_8024FEEC(func_8025ADD4(COMUSIC_30_5TH_JINJO_COLLECTED) & 0xFF); - if((func_80259B8C() < 4 && temp_s0 >= 0xBB9) || !func_8025AD7C(COMUSIC_30_5TH_JINJO_COLLECTED)){ + if((comusic_active_track_count() < 4 && temp_s0 >= 0xBB9) || !func_8025AD7C(COMUSIC_30_5TH_JINJO_COLLECTED)){ func_8028F918(0); D_8037BF88 = 0; } diff --git a/src/core2/ch/bottlesbonus.c b/src/core2/ch/bottlesbonus.c index 50f9b833..9e86fe47 100644 --- a/src/core2/ch/bottlesbonus.c +++ b/src/core2/ch/bottlesbonus.c @@ -50,7 +50,7 @@ typedef struct{ extern void item_set(enum item_e, s32); extern void actor_postdrawMethod(ActorMarker *); -extern void func_8024CE60(f32, f32); +extern void viewport_set_near_far(f32, f32); Actor *chBottlesBonus_draw(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx); void chBottlesBonus_update(Actor *this); @@ -123,7 +123,7 @@ void chBottlesBonus_func_802DD080(Gfx **gfx, Mtx **mtx) { f32 vp_rotation[3]; func_8024E258(); - func_8024CE60(50.0f, 2000.0f); + viewport_set_near_far(50.0f, 2000.0f); if (getGameMode() == GAME_MODE_A_SNS_PICTURE) { vp_rotation[0] = 0.0f; vp_rotation[1] = 0.0f; diff --git a/src/core2/code_5C870.c b/src/core2/code_5C870.c index c8879970..1b0c87b5 100644 --- a/src/core2/code_5C870.c +++ b/src/core2/code_5C870.c @@ -7,7 +7,7 @@ extern void func_8024C510(f32); extern void viewport_set_position_f3(f32, f32, f32); extern void viewport_set_rotation_f3(f32, f32, f32); -extern void func_8024CE60(f32, f32); +extern void viewport_set_near_far(f32, f32); extern void func_802F5374(void); extern void func_802FA0F8(void); extern void timedFuncQueue_update(void); @@ -285,7 +285,7 @@ s32 func_802E3F80(void){ //game_draw void func_802E3F8C(s32 arg0){ Gfx *sp34; - Gfx *sp30; + Gfx *gfx_start; Gfx *sp2C; Mtx *sp28; Vtx *sp24; @@ -297,12 +297,12 @@ void func_802E3F8C(s32 arg0){ if(D_8037E8E0.unkC == 1){ func_80254404(&sp34, &sp28, &sp24); } - sp30 = sp34; + gfx_start = sp34; func_802E39D0(&sp34, &sp28, &sp24, func_8024BDA0(), arg0); if(D_8037E8E0.unkC == 0){ sp2C = sp34; func_8024C1DC(); - func_80253EC4(sp30, sp2C); + func_80253EC4(gfx_start, sp2C); if(arg0){ func_80254348(); } @@ -396,9 +396,9 @@ void func_802E4214(enum map_e map_id){ modelRender_init(); func_80253428(1); animCache_init(); - func_8024CCC4(); - func_8024CE60(1.0f, 10000.0f); - func_8034A6B4(); + viewport_reset(); + viewport_set_near_far(1.0f, 10000.0f); + rand_reset(); func_80254348(); func_80253FE8(); func_8033DC70(); @@ -434,8 +434,8 @@ bool func_802E4424(void) { s32 sp1C; u8 temp_v0; - func_8024CC00(); - func_8034A85C(); + viewport_debug(); + rand_shuffle(); if (!gctransition_8030BDC0()) { temp_v0 = D_8037E8E0.transition; D_8037E8E0.transition = TRANSITION_0_NONE; diff --git a/src/core2/code_AD5B0.c b/src/core2/code_AD5B0.c index c425e2e8..02b78a2a 100644 --- a/src/core2/code_AD5B0.c +++ b/src/core2/code_AD5B0.c @@ -19,7 +19,7 @@ u32 D_803835E0; /* public */ void func_80335110(s32); void func_80335128(s32); -void func_8024CE60(f32, f32); +void viewport_set_near_far(f32, f32); void func_80335140(enum map_e); void func_8033520C(s32); @@ -31,7 +31,7 @@ void func_80334540(Gfx** gdl, Mtx **mptr, Vtx **vptr) { if (D_803835E0 == 0) { func_80254084(gdl, 0, 0, framebuffer_width, framebuffer_height, 0, 0, 0); func_802BBD2C(&sp44, &sp40); - func_8024CE60(sp44, sp40); + viewport_set_near_far(sp44, sp40); func_8024C904(gdl, mptr); return; } @@ -41,7 +41,7 @@ void func_80334540(Gfx** gdl, Mtx **mptr, Vtx **vptr) { spawnQueue_unlock(); sky_draw(gdl, mptr, vptr); func_802BBD2C(&sp44, &sp40); - func_8024CE60(sp44, sp40); + viewport_set_near_far(sp44, sp40); func_8024C904(gdl, mptr); if (mapModel_has_xlu_bin() != 0) { mapModel_opa_draw(gdl, mptr, vptr); diff --git a/src/core2/code_C2F30.c b/src/core2/code_C2F30.c index b5691d9d..0e2f8e20 100644 --- a/src/core2/code_C2F30.c +++ b/src/core2/code_C2F30.c @@ -79,7 +79,7 @@ void func_80349FB0(DemoInput *input_ptr, u32 size, int arg2){ func_8030AFA0(map_get()); func_803204E4(0xc4, 1); func_8024F224(); - func_8034A6B4(); + rand_reset(); func_8023DB68(); }//*/ diff --git a/src/core2/gc/sky.c b/src/core2/gc/sky.c index acf09c67..f0453c9b 100644 --- a/src/core2/gc/sky.c +++ b/src/core2/gc/sky.c @@ -2,7 +2,7 @@ #include "functions.h" #include "variables.h" -extern void func_8024CE60(f32, f32); +extern void viewport_set_near_far(f32, f32); typedef struct { s16 model_id; @@ -74,7 +74,7 @@ void sky_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx){ f32 rotation[3]; BKModelBin *iAsset; - func_8024CE60(5.0f, 15000.0f); + viewport_set_near_far(5.0f, 15000.0f); if(gcSky.model_bins[0]){ func_80254084(gfx, 0, 0, (s32)(f32) framebuffer_width, (s32)(f32)framebuffer_height,0, 0, 0); //fill screen with black func_8024C904(gfx, mtx); diff --git a/src/core2/gc/transition.c b/src/core2/gc/transition.c index 8acc96df..f2be092f 100644 --- a/src/core2/gc/transition.c +++ b/src/core2/gc/transition.c @@ -7,7 +7,7 @@ void animctrl_setAnimTimer(AnimCtrl*, f32); void func_8025AC20(s32, s32, s32, f32, char*, s32); f32 func_80257618(void); -void func_8024CE60(f32, f32); +void viewport_set_near_far(f32, f32); typedef enum { TRANSITION_ID_1_BLACK_IN = 1, @@ -265,7 +265,7 @@ void gctransition_draw(Gfx **gdl, Mtx **mptr, Vtx **vptr){ vp_rotation[0] = 0.0f; vp_rotation[1] = 0.0f; vp_rotation[2] = 0.0f; - func_8024CE60(D_8036C440, D_8036C444); + viewport_set_near_far(D_8036C440, D_8036C444); viewport_set_position_vec3f(vp_position); //viewport_get_position_vec3f viewport_set_rotation_vec3f(vp_rotation); //viewport_get_rotation_vec3f viewport_update(); //camera_updateNormal diff --git a/src/core2/gc/zoombox.c b/src/core2/gc/zoombox.c index 94d77940..7aa7cc33 100644 --- a/src/core2/gc/zoombox.c +++ b/src/core2/gc/zoombox.c @@ -616,7 +616,7 @@ void func_8031594C(gczoombox_t * this, u8 *str, s32 arg2, s32 arg3){ f22 = (this->portrait_id == TALK_PIC_5F_TOOTY_4) ? 0.4 : 0.8; if(getGameMode() == GAME_MODE_9_BANJO_AND_KAZOOIE){ - func_8034A900(); + sfx_rand_sync_to_rand(); } for(s2 = arg2; s2 <= arg3; s2++){ if(s1){ @@ -669,7 +669,7 @@ void func_8031594C(gczoombox_t * this, u8 *str, s32 arg2, s32 arg3){ this->unk189 = s1; this->unk187 = 0; if(getGameMode() == GAME_MODE_9_BANJO_AND_KAZOOIE){ - func_8034A964(); + rand_sync_to_sfx_rand(); } } @@ -991,7 +991,7 @@ void gczoombox_draw(gczoombox_t *this, Gfx **gdl, Mtx ** mptr, void *vptr){ return; if(getGameMode() == GAME_MODE_9_BANJO_AND_KAZOOIE) - func_8034A900(); + sfx_rand_sync_to_rand(); //L80316BCC if(this->unk1A4_28 && this->state && this->model){ func_803162B4(this); @@ -1027,7 +1027,7 @@ void gczoombox_draw(gczoombox_t *this, Gfx **gdl, Mtx ** mptr, void *vptr){ } }//L80316DD8 if(getGameMode() == GAME_MODE_9_BANJO_AND_KAZOOIE){ - func_8034A964(); + rand_sync_to_sfx_rand(); } diff --git a/src/core2/rand.c b/src/core2/rand.c index 27587384..458e82e8 100644 --- a/src/core2/rand.c +++ b/src/core2/rand.c @@ -17,6 +17,9 @@ s32 D_80386108; s32 D_8038610C; /* .code */ +/** + * returns a random float in the range of [0.0, 1.0) + */ f32 randf(void){ f32 out; if(D_803860E4 & 3){ @@ -38,7 +41,10 @@ f32 randf(void){ return out; } -//only used in some sfx instances; +/** + * returns a random float in the range of [0.0, 1.0). + * Is only used in some sfx instances. + */ f32 sfx_rand(void){ f32 out; if(D_803860F0 & 3){ @@ -67,7 +73,10 @@ f32 func_8034A668(void){ return out; } -void func_8034A6B4(void){ +/** + * @brief resets all random functions to their default seed + */ +void rand_reset(void){ D_803860E0 = 0x86D; D_803860E4 = 0x2c060731; D_803860E8 = 0x19f0458b; @@ -97,7 +106,10 @@ s32 sfx_randi2(s32 min, s32 max){ return min + sfx_rand()*(max - min); } -void func_8034A85C(void){ +/** + * @brief calls randf() between 2 to 5 times + */ +void rand_shuffle(void){ int i; int start = randf()*3.0f; for(i = 2 + start; i != 0; i--){ @@ -105,14 +117,21 @@ void func_8034A85C(void){ } } -void func_8034A8BC(s32 arg0){ - func_8034A6B4(); - for(arg0; arg0 > 0; arg0--){ +/** + * @brief seeds rand methods. + */ +void rand_seed(s32 seed){ + rand_reset(); + for(seed; seed > 0; seed--){ randf(); } } -void func_8034A900(void){ +/** + * @brief syncronizes the internal values of sfx specific rand to those of rand. + * + */ +void sfx_rand_sync_to_rand(void){ D_803860F8 = D_803860E0; D_803860FC = D_803860E4; D_80386100 = D_803860E8; @@ -121,7 +140,11 @@ void func_8034A900(void){ D_8038610C = D_803860F4; } -void func_8034A964(void){ +/** + * @brief syncronizes the internal values of rand to those of sfx specific rand. + * + */ +void rand_sync_to_sfx_rand(void){ D_803860E0 = D_803860F8; D_803860E4 = D_803860FC; D_803860E8 = D_80386100; diff --git a/src/fight/chbossjinjo.c b/src/fight/chbossjinjo.c index 1a7474ac..2b72d6d9 100644 --- a/src/fight/chbossjinjo.c +++ b/src/fight/chbossjinjo.c @@ -283,7 +283,7 @@ void func_8038C840(Actor *this){ if(func_8030E3FC(this->unk44_31)) func_8030E394(this->unk44_31); func_8030E484(SFX_19_BANJO_LANDING_08); - func_8025A7DC(0x43); + func_8025A7DC(COMUSIC_43_ENTER_LEVEL_GLITTER); }//L8038CD20 } diff --git a/src/lair/ch/brentilda.c b/src/lair/ch/brentilda.c index 02c34607..2430465f 100644 --- a/src/lair/ch/brentilda.c +++ b/src/lair/ch/brentilda.c @@ -69,7 +69,7 @@ void func_8038BC24(void) { s32 phi_s1; if (fileProgressFlag_get(FILEPROG_5C_FF_PATTERN_SET) && !func_803203FC(0x62)) { - func_8034A8BC(fileProgressFlag_getN(FILEPROG_D3_FF_PATTERN, 8)); + rand_seed(fileProgressFlag_getN(FILEPROG_D3_FF_PATTERN, 8)); for(phi_s1 = 0; phi_s1 < func_8031A45C(3); phi_s1++){ phi_s0 = 0x26 + 2*phi_s1; temp_v0 = randi2(0, 3); diff --git a/src/lair/code_86F0.c b/src/lair/code_86F0.c index 18a94488..663ba6f1 100644 --- a/src/lair/code_86F0.c +++ b/src/lair/code_86F0.c @@ -5,7 +5,7 @@ extern f32 ml_distanceSquared_vec3f(f32[3], f32[3]); extern void func_8028F3D8(f32[3], f32, void(*)(ActorMarker *), ActorMarker *); extern void func_80324CFC(f32, enum comusic_e, s32); -extern void func_8034A8BC(s32); +extern void rand_seed(s32); extern void func_8034DF30(s32, f32[3], f32[3], f32); extern void func_8034E088(s32, s32, s32,f32); @@ -225,7 +225,7 @@ s32 func_8038F0EC(Actor *this) { phi_s0 = 0; local = (ActorLocal_lair_86F0*)&this->local; - func_8034A8BC(this->unkF4_8); + rand_seed(this->unkF4_8); if (this->unkF4_8 >= 0xA) { for(phi_s2 = 0; phi_s2 < local->unk4; phi_s2++){ sp34 = phi_s2;