Skip to content

Commit 2251c54

Browse files
committed
bflibrary: Fore functs separated from draw_gpoly()
1 parent b550764 commit 2251c54

File tree

1 file changed

+22
-80
lines changed

1 file changed

+22
-80
lines changed

bflibrary/src/general/poly_gp.c

Lines changed: 22 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -581,9 +581,9 @@ static void gpoly_convert_uv3(struct gpoly_factors *p_inc, uint u, uint v)
581581
p_inc->S[3] = fctr_vs;
582582
}
583583

584-
static void gpoly_get_uv_inc(struct gpoly_factors *p_inc, const struct gpoly_factors *p_base, int ratio_X2Y, const struct gpoly_point *p_pt1, const struct gpoly_point *p_pt2)
584+
static void gpoly_get_uv_simp(struct gpoly_factors *p_inc, const struct gpoly_point *p_pt1, const struct gpoly_point *p_pt2)
585585
{
586-
int dist_c5, mag_a1, tmp;
586+
int dist_c5, mag_a1;
587587

588588
dist_c5 = p_pt2->Y - p_pt1->Y;
589589
if (dist_c5 > 255)
@@ -593,6 +593,11 @@ static void gpoly_get_uv_inc(struct gpoly_factors *p_inc, const struct gpoly_fac
593593
p_inc->S[0] = gpoly_mul_rot_2(mag_a1, 2 * (p_pt2->S - p_pt1->S));
594594
p_inc->S[1] = gpoly_mul_rot_2(mag_a1, 2 * (p_pt2->Ua - p_pt1->Ua));
595595
p_inc->S[2] = gpoly_mul_rot_2(mag_a1, 2 * (p_pt2->Vb - p_pt1->Vb));
596+
}
597+
598+
static void gpoly_get_uv_inc(struct gpoly_factors *p_inc, const struct gpoly_factors *p_base, int ratio_X2Y, const struct gpoly_point *p_pt1, const struct gpoly_point *p_pt2)
599+
{
600+
int tmp;
596601

597602
tmp = ((p_base->S[1] * ratio_X2Y) & 0xFFFF0000) | (((p_base->S[1] * (s64)ratio_X2Y) >> 32) & 0xFFFF);
598603
p_inc->S[1] -= bw_rotl32(tmp, 16);
@@ -635,35 +640,12 @@ void gpoly_sta_md03(struct gpoly_state *st)
635640
}
636641
if (st->var_134 < 0)
637642
{
638-
int dist_c5, mag_a1;
639-
640-
dist_c5 = st->ptC.Y - st->ptA.Y;
641-
if (dist_c5 > 255)
642-
mag_a1 = 0x7FFFFFFF / dist_c5;
643-
else
644-
mag_a1 = gpoly_reptable[dist_c5];
645-
st->incD.S[1] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptC.Ua - st->ptA.Ua));
646-
st->incD.S[2] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptC.Vb - st->ptA.Vb));
643+
gpoly_get_uv_simp(&st->incD, &st->ptA, &st->ptC);
647644
}
648645
else
649646
{
650-
int dist_c5, mag_a1;
651-
652-
dist_c5 = st->ptB.Y - st->ptA.Y;
653-
if (dist_c5 > 255)
654-
mag_a1 = 0x7FFFFFFF / dist_c5;
655-
else
656-
mag_a1 = gpoly_reptable[dist_c5];
657-
st->incD.S[1] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptB.Ua - st->ptA.Ua));
658-
st->incD.S[2] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptB.Vb - st->ptA.Vb));
659-
660-
dist_c5 = st->ptC.Y - st->ptB.Y;
661-
if (dist_c5 > 255)
662-
mag_a1 = 0x7FFFFFFF / dist_c5;
663-
else
664-
mag_a1 = gpoly_reptable[dist_c5];
665-
st->incC.S[1] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptC.Ua - st->ptB.Ua));
666-
st->incC.S[2] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptC.Vb - st->ptB.Vb));
647+
gpoly_get_uv_simp(&st->incD, &st->ptA, &st->ptB);
648+
gpoly_get_uv_simp(&st->incC, &st->ptB, &st->ptC);
667649
}
668650

669651
int ptA_Ua_prc, ptA_Vb_prc, ptB_Ua_prc, ptB_Vb_prc;
@@ -723,32 +705,12 @@ void gpoly_sta_md04(struct gpoly_state *st)
723705

724706
if (st->var_134 < 0)
725707
{
726-
int dist_c5, mag_a1;
727-
728-
dist_c5 = st->ptC.Y - st->ptA.Y;
729-
if (dist_c5 > 255)
730-
mag_a1 = 0x7FFFFFFF / dist_c5;
731-
else
732-
mag_a1 = gpoly_reptable[dist_c5];
733-
st->incD.S[0] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptC.S - st->ptA.S));
708+
gpoly_get_uv_simp(&st->incD, &st->ptA, &st->ptC);
734709
}
735710
else
736711
{
737-
int dist_c5, mag_a1;
738-
739-
dist_c5 = st->ptB.Y - st->ptA.Y;
740-
if (dist_c5 > 255)
741-
mag_a1 = 0x7FFFFFFF / dist_c5;
742-
else
743-
mag_a1 = gpoly_reptable[dist_c5];
744-
st->incD.S[0] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptB.S - st->ptA.S));
745-
746-
dist_c5 = st->ptC.Y - st->ptB.Y;
747-
if (dist_c5 > 255)
748-
mag_a1 = 0x7FFFFFFF / dist_c5;
749-
else
750-
mag_a1 = gpoly_reptable[dist_c5];
751-
st->incC.S[0] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptC.S - st->ptB.S));
712+
gpoly_get_uv_simp(&st->incD, &st->ptA, &st->ptB);
713+
gpoly_get_uv_simp(&st->incC, &st->ptB, &st->ptC);
752714
}
753715
}
754716

@@ -788,38 +750,12 @@ void gpoly_sta_md05(struct gpoly_state *st)
788750
}
789751
if (st->var_134 < 0)
790752
{
791-
int dist_c5, mag_a1;
792-
793-
dist_c5 = st->ptC.Y - st->ptA.Y;
794-
if (dist_c5 > 255)
795-
mag_a1 = 0x7FFFFFFF / dist_c5;
796-
else
797-
mag_a1 = gpoly_reptable[dist_c5];
798-
st->incD.S[0] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptC.S - st->ptA.S));
799-
st->incD.S[1] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptC.Ua - st->ptA.Ua));
800-
st->incD.S[2] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptC.Vb - st->ptA.Vb));
753+
gpoly_get_uv_simp(&st->incD, &st->ptA, &st->ptC);
801754
}
802755
else
803756
{
804-
int dist_c5, mag_a1;
805-
806-
dist_c5 = st->ptB.Y - st->ptA.Y;
807-
if (dist_c5 > 255)
808-
mag_a1 = 0x7FFFFFFF / dist_c5;
809-
else
810-
mag_a1 = gpoly_reptable[dist_c5];
811-
st->incD.S[0] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptB.S - st->ptA.S));
812-
st->incD.S[1] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptB.Ua - st->ptA.Ua));
813-
st->incD.S[2] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptB.Vb - st->ptA.Vb));
814-
815-
dist_c5 = st->ptC.Y - st->ptB.Y;
816-
if (dist_c5 > 255)
817-
mag_a1 = 0x7FFFFFFF / dist_c5;
818-
else
819-
mag_a1 = gpoly_reptable[dist_c5];
820-
st->incC.S[0] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptC.S - st->ptB.S));
821-
st->incC.S[1] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptC.Ua - st->ptB.Ua));
822-
st->incC.S[2] = gpoly_mul_rot_2(mag_a1, 2 * (st->ptC.Vb - st->ptB.Vb));
757+
gpoly_get_uv_simp(&st->incD, &st->ptA, &st->ptB);
758+
gpoly_get_uv_simp(&st->incC, &st->ptB, &st->ptC);
823759
}
824760

825761
int ptA_S_prc, ptA_Ua_prc, ptA_Vb_prc, ptB_S_prc, ptB_Ua_prc, ptB_Vb_prc;
@@ -890,11 +826,14 @@ void gpoly_sta_md27(struct gpoly_state *st)
890826

891827
if (st->var_134 < 0)
892828
{
829+
gpoly_get_uv_simp(&st->incD, &st->ptA, &st->ptC);
893830
gpoly_get_uv_inc(&st->incD, &st->incB, st->ratioCA_X2Y, &st->ptA, &st->ptC);
894831
}
895832
else
896833
{
834+
gpoly_get_uv_simp(&st->incD, &st->ptA, &st->ptB);
897835
gpoly_get_uv_inc(&st->incD, &st->incB, st->ratioBA_X2Y, &st->ptA, &st->ptB);
836+
gpoly_get_uv_simp(&st->incC, &st->ptB, &st->ptC);
898837
gpoly_get_uv_inc(&st->incC, &st->incB, st->ratioCB_X2Y, &st->ptB, &st->ptC);
899838
}
900839

@@ -960,11 +899,14 @@ void gpoly_sta_md28(struct gpoly_state *st)
960899
}
961900
if (st->var_134 < 0)
962901
{
902+
gpoly_get_uv_simp(&st->incD, &st->ptA, &st->ptC);
963903
gpoly_get_uv_inc(&st->incD, &st->incB, st->ratioCA_X2Y, &st->ptA, &st->ptC);
964904
}
965905
else
966906
{
907+
gpoly_get_uv_simp(&st->incD, &st->ptA, &st->ptB);
967908
gpoly_get_uv_inc(&st->incD, &st->incB, st->ratioBA_X2Y, &st->ptA, &st->ptB);
909+
gpoly_get_uv_simp(&st->incC, &st->ptB, &st->ptC);
968910
gpoly_get_uv_inc(&st->incC, &st->incB, st->ratioCB_X2Y, &st->ptB, &st->ptC);
969911
}
970912

0 commit comments

Comments
 (0)