Fix puppyprint font kerning

This commit is contained in:
Arceveti
2021-09-28 14:14:48 -07:00
parent 5b43bc3b03
commit 04b6089d72
2 changed files with 37 additions and 45 deletions

View File

@@ -17,22 +17,11 @@ ALIGNED8 static const Texture small_font_2[] = {
#include "textures/segment2/custom_text2.i4.inc.c"
};
const Texture *const puppyprint_font_lut[2] =
{
const Texture *const puppyprint_font_lut[2] = {
small_font_1, small_font_2
};
static const u8 small_font_kerning_1[80] =
{
/*0*/ 7, /*1*/ 7, /*2*/ 7, /*3*/ 7, /*4*/ 7, /*5*/ 7, /*6*/ 7, /*7*/ 7, /*8*/ 7, /*9*/ 7, /*-*/ 7, /*+*/ 7, /*(*/ 4, /*)*/ 4, /*!*/ 5, /*?*/ 6,
/*A*/ 7, /*B*/ 7, /*C*/ 7, /*D*/ 7, /*E*/ 7, /*F*/ 7, /*G*/ 7, /*H*/ 7, /*I*/ 7, /*J*/ 7, /*K*/ 7, /*L*/ 7, /*M*/ 7, /*N*/ 7, /*O*/ 7, /*P*/ 7,
/*Q*/ 7, /*R*/ 7, /*S*/ 7, /*T*/ 7, /*U*/ 7, /*V*/ 7, /*W*/ 7, /*X*/ 7, /*Y*/ 7, /*Z*/ 7, /*"*/ 5, /*'*/ 2, /*:*/ 3, /*;*/ 3, /*.*/ 3, /*,*/ 3,
/*a*/ 6, /*b*/ 6, /*c*/ 6, /*d*/ 6, /*e*/ 6, /*f*/ 6, /*g*/ 6, /*h*/ 6, /*i*/ 2, /*j*/ 6, /*k*/ 6, /*l*/ 3, /*m*/ 6, /*n*/ 6, /*o*/ 6, /*p*/ 6,
/*q*/ 6, /*r*/ 6, /*s*/ 6, /*t*/ 6, /*u*/ 6, /*v*/ 6, /*w*/ 6, /*x*/ 6, /*y*/ 6, /*z*/ 6, /*~*/ 7, /*¨*/ 6, /*^*/ 7, /*/*/ 6, /*%*/ 6, /*&*/ 7,
};
static const u8 small_font_kerning_2[80] =
{
static const u8 small_font_kerning_1[80] = {
/*0*/ 6, /*1*/ 5, /*2*/ 7, /*3*/ 7, /*4*/ 7, /*5*/ 7, /*6*/ 8, /*7*/ 7, /*8*/ 7, /*9*/ 6, /*-*/ 8, /*+*/ 8, /*(*/ 5, /*)*/ 5, /*!*/ 4, /*?*/ 6,
/*A*/ 7, /*B*/ 7, /*C*/ 7, /*D*/ 7, /*E*/ 6, /*F*/ 5, /*G*/ 8, /*H*/ 6, /*I*/ 6, /*J*/ 5, /*K*/ 7, /*L*/ 6, /*M*/ 7, /*N*/ 7, /*O*/ 7, /*P*/ 6,
/*Q*/ 8, /*R*/ 6, /*S*/ 7, /*T*/ 7, /*U*/ 7, /*V*/ 7, /*W*/ 8, /*X*/ 7, /*Y*/ 7, /*Z*/ 7, /*"*/ 5, /*'*/ 2, /*:*/ 3, /*;*/ 3, /*.*/ 3, /*,*/ 3,
@@ -40,8 +29,15 @@ static const u8 small_font_kerning_2[80] =
/*q*/ 7, /*r*/ 6, /*s*/ 6, /*t*/ 6, /*u*/ 6, /*v*/ 7, /*w*/ 8, /*x*/ 6, /*y*/ 8, /*z*/ 7, /*~*/ 8, /*¨*/ 7, /*^*/ 8, /*/*/ 8, /*%*/ 8, /*&*/ 8,
};
const u8 *const puppyprint_kerning_lut[2][80] =
{
static const u8 small_font_kerning_2[80] = {
/*0*/ 7, /*1*/ 7, /*2*/ 7, /*3*/ 7, /*4*/ 7, /*5*/ 7, /*6*/ 7, /*7*/ 7, /*8*/ 7, /*9*/ 7, /*-*/ 7, /*+*/ 7, /*(*/ 4, /*)*/ 4, /*!*/ 5, /*?*/ 6,
/*A*/ 7, /*B*/ 7, /*C*/ 7, /*D*/ 7, /*E*/ 7, /*F*/ 7, /*G*/ 7, /*H*/ 7, /*I*/ 7, /*J*/ 7, /*K*/ 7, /*L*/ 7, /*M*/ 7, /*N*/ 7, /*O*/ 7, /*P*/ 7,
/*Q*/ 7, /*R*/ 7, /*S*/ 7, /*T*/ 7, /*U*/ 7, /*V*/ 7, /*W*/ 7, /*X*/ 7, /*Y*/ 7, /*Z*/ 7, /*"*/ 5, /*'*/ 2, /*:*/ 3, /*;*/ 3, /*.*/ 3, /*,*/ 3,
/*a*/ 6, /*b*/ 6, /*c*/ 6, /*d*/ 6, /*e*/ 6, /*f*/ 6, /*g*/ 6, /*h*/ 6, /*i*/ 2, /*j*/ 6, /*k*/ 6, /*l*/ 3, /*m*/ 6, /*n*/ 6, /*o*/ 6, /*p*/ 6,
/*q*/ 6, /*r*/ 6, /*s*/ 6, /*t*/ 6, /*u*/ 6, /*v*/ 6, /*w*/ 6, /*x*/ 6, /*y*/ 6, /*z*/ 6, /*~*/ 7, /*¨*/ 6, /*^*/ 7, /*/*/ 6, /*%*/ 6, /*&*/ 7,
};
const u8 *const puppyprint_kerning_lut[2][80] = {
small_font_kerning_1, small_font_kerning_2
};

View File

@@ -180,39 +180,35 @@ void mtxf_rot_trans_mul(Vec3s rot, Vec3f trans, Mat4 dest, Mat4 src) {
register f32 sz = sins(rot[2]);
register f32 cz = coss(rot[2]);
register f32 entry0;
register f32 entry1;
register f32 entry2;
register Vec3f entry;
entry0 = cy * cz;
entry1 = cy * sz;
entry2 = -sy;
dest[0][0] = entry0 * src[0][0] + entry1 * src[1][0] + entry2 * src[2][0];
dest[0][1] = entry0 * src[0][1] + entry1 * src[1][1] + entry2 * src[2][1];
dest[0][2] = entry0 * src[0][2] + entry1 * src[1][2] + entry2 * src[2][2];
entry[0] = cy * cz;
entry[1] = cy * sz;
entry[2] = -sy;
dest[0][0] = entry[0] * src[0][0] + entry[1] * src[1][0] + entry[2] * src[2][0];
dest[0][1] = entry[0] * src[0][1] + entry[1] * src[1][1] + entry[2] * src[2][1];
dest[0][2] = entry[0] * src[0][2] + entry[1] * src[1][2] + entry[2] * src[2][2];
entry1 = sx * sy;
entry0 = entry1 * cz - cx * sz;
entry1 = entry1 * sz + cx * cz;
entry2 = sx * cy;
dest[1][0] = entry0 * src[0][0] + entry1 * src[1][0] + entry2 * src[2][0];
dest[1][1] = entry0 * src[0][1] + entry1 * src[1][1] + entry2 * src[2][1];
dest[1][2] = entry0 * src[0][2] + entry1 * src[1][2] + entry2 * src[2][2];
entry[1] = sx * sy;
entry[0] = (entry[1] * cz) - (cx * sz);
entry[1] = (entry[1] * sz) + (cx * cz);
entry[2] = sx * cy;
dest[1][0] = entry[0] * src[0][0] + entry[1] * src[1][0] + entry[2] * src[2][0];
dest[1][1] = entry[0] * src[0][1] + entry[1] * src[1][1] + entry[2] * src[2][1];
dest[1][2] = entry[0] * src[0][2] + entry[1] * src[1][2] + entry[2] * src[2][2];
entry1 = cx * sy;
entry0 = entry1 * cz + sx * sz;
entry1 = entry1 * sz - sx * cz;
entry2 = cx * cy;
dest[2][0] = entry0 * src[0][0] + entry1 * src[1][0] + entry2 * src[2][0];
dest[2][1] = entry0 * src[0][1] + entry1 * src[1][1] + entry2 * src[2][1];
dest[2][2] = entry0 * src[0][2] + entry1 * src[1][2] + entry2 * src[2][2];
entry[1] = cx * sy;
entry[0] = (entry[1] * cz) + (sx * sz);
entry[1] = (entry[1] * sz) - (sx * cz);
entry[2] = cx * cy;
dest[2][0] = entry[0] * src[0][0] + entry[1] * src[1][0] + entry[2] * src[2][0];
dest[2][1] = entry[0] * src[0][1] + entry[1] * src[1][1] + entry[2] * src[2][1];
dest[2][2] = entry[0] * src[0][2] + entry[1] * src[1][2] + entry[2] * src[2][2];
entry0 = trans[0];
entry1 = trans[1];
entry2 = trans[2];
dest[3][0] = entry0 * src[0][0] + entry1 * src[1][0] + entry2 * src[2][0] + src[3][0];
dest[3][1] = entry0 * src[0][1] + entry1 * src[1][1] + entry2 * src[2][1] + src[3][1];
dest[3][2] = entry0 * src[0][2] + entry1 * src[1][2] + entry2 * src[2][2] + src[3][2];
vec3_copy(entry, trans);
dest[3][0] = entry[0] * src[0][0] + entry[1] * src[1][0] + entry[2] * src[2][0] + src[3][0];
dest[3][1] = entry[0] * src[0][1] + entry[1] * src[1][1] + entry[2] * src[2][1] + src[3][1];
dest[3][2] = entry[0] * src[0][2] + entry[1] * src[1][2] + entry[2] * src[2][2] + src[3][2];
dest[0][3] = dest[1][3] = dest[2][3] = 0;
((u32 *) dest)[15] = 0x3F800000;
}
@@ -228,7 +224,7 @@ void mtxf_lookat(Mat4 mtx, Vec3f from, Vec3f to, s32 roll) {
register f32 dx = (to[0] - from[0]);
register f32 dz = (to[2] - from[2]);
register f32 invLength = sqrtf(sqr(dx) + sqr(dz));
invLength = -(1.0f / MAX(invLength, NEAR_ZERO));
invLength = -(1.0f / MAX(invLength, __FLT_EPSILON__));
dx *= invLength;
dz *= invLength;
f32 sr = sins(roll);