more various JSystem work (#2046)

* most of J3DAnmLoader done

* J3D / JKernel / JUTConsole work

* remove asm

* fix build

* dol 50%
This commit is contained in:
TakaRikka
2024-01-24 04:00:46 -08:00
committed by GitHub
parent b2310b84b6
commit ba44ade90c
122 changed files with 2330 additions and 5261 deletions
+82 -79
View File
@@ -1392,110 +1392,113 @@ SECTION_SDATA2 static f32 lit_2933 = 0.5f;
/* 802FED84-802FF09C 2F96C4 0318+00 2/2 0/0 0/0 .text
* setTexCoord__10J2DPictureFPQ29JGeometry8TVec2<s>PC10JUTTexture10J2DBinding9J2DMirrorb */
// matches with literals
#ifdef NONMATCHING
void J2DPicture::setTexCoord(JGeometry::TVec2<s16>* param_0, JUTTexture const* param_1,
J2DBinding param_2, J2DMirror param_3, bool param_4) {
u8 var_r0;
u8 var_r4;
u8 var_r7;
u8 var_r9;
J2DBinding binding, J2DMirror mirror, bool rotate90) {
bool bindLeft;
bool bindRight;
bool bindTop;
bool bindBottom;
f32 sp14;
f32 sp10;
f32 spC;
f32 sp8;
if (!rotate90) {
if (mirror & J2DMirror_X)
bindLeft = binding & J2DBind_Right;
else
bindLeft = binding & J2DBind_Left;
f32 var_f0;
f32 var_f2;
f32 var_f3;
f32 var_f4;
f32 var_f5;
if (mirror & J2DMirror_X)
bindRight = binding & J2DBind_Left;
else
bindRight = binding & J2DBind_Right;
if (!param_4) {
var_r0 = (param_3 & 2) ? (param_2 & 4) : (param_2 & 8);
var_r4 = (param_3 & 2) ? (param_2 & 8) : (param_2 & 4);
var_r7 = (param_3 & 1) ? (param_2 & 1) : (param_2 & 2);
var_r9 = (param_3 & 1) ? (param_2 & 1) : (param_2 & 2);
if (mirror & J2DMirror_Y)
bindTop = binding & J2DBind_Bottom;
else
bindTop = binding & J2DBind_Top;
if (mirror & J2DMirror_Y)
bindBottom = binding & J2DBind_Top;
else
bindBottom = binding & J2DBind_Bottom;
} else {
var_r0 = (param_3 & 2) ? (param_2 & 1) : (param_2 & 2);
var_r4 = (param_3 & 2) ? (param_2 & 2) : (param_2 & 1);
var_r7 = (param_3 & 1) ? (param_2 & 8) : (param_2 & 4);
var_r9 = (param_3 & 1) ? (param_2 & 4) : (param_2 & 8);
if (mirror & J2DMirror_X)
bindLeft = binding & J2DBind_Bottom;
else
bindLeft = binding & J2DBind_Top;
if (mirror & J2DMirror_X)
bindRight = binding & J2DBind_Top;
else
bindRight = binding & J2DBind_Bottom;
if (mirror & J2DMirror_Y)
bindTop = binding & J2DBind_Left;
else
bindTop = binding & J2DBind_Right;
if (mirror & J2DMirror_Y)
bindBottom = binding & J2DBind_Right;
else
bindBottom = binding & J2DBind_Left;
}
if (!param_4) {
var_f2 = getHeight();
} else {
var_f2 = getWidth();
}
f32 rectWidth;
f32 rectHeight;
if (!param_4) {
var_f3 = getWidth();
} else {
var_f3 = getHeight();
}
rectWidth = !rotate90 ? getWidth() : getHeight();
rectHeight = !rotate90 ? getHeight() : getWidth();
f32 texWidth;
f32 texHeight;
if (param_1 == NULL) {
var_f4 = var_f2;
var_f5 = var_f3;
texWidth = rectWidth;
texHeight = rectHeight;
} else {
var_f4 = param_1->getWidth();
var_f5 = param_1->getHeight();
texWidth = param_1->getWidth();
texHeight = param_1->getHeight();
}
if (var_r0 != 0) {
sp14 = 0.0f;
if (var_r4 != 0) {
var_f0 = 1.0f;
} else {
var_f0 = var_f2 / var_f4;
}
spC = var_f0;
} else if (var_r4 != 0) {
sp14 = 1.0f - (var_f2 / var_f4);
spC = 1.0f;
f32 s0, t0, s1, t1;
if (bindLeft) {
s0 = 0.0f;
s1 = bindRight ? 1.0f : (rectWidth / texWidth);
} else if (bindRight) {
s0 = 1.0f - (rectWidth / texWidth);
s1 = 1.0f;
} else {
sp14 = 0.5f - ((var_f2 / var_f4) * 0.5f);
spC = 0.5f + ((var_f2 / var_f4) * 0.5f);
s0 = 0.5f - (rectWidth / texWidth) / 2.0f;
s1 = 0.5f + (rectWidth / texWidth) / 2.0f;
}
if (var_r7 != 0) {
sp10 = 0.0f;
f32 var_f0_2;
if (var_r9 != 0) {
var_f0_2 = 1.0f;
} else {
var_f0_2 = var_f3 / var_f5;
}
sp8 = var_f0_2;
} else if (var_r9 != 0) {
sp10 = 1.0f - (var_f3 / var_f5);
sp8 = 1.0f;
if (bindTop) {
t0 = 0.0f;
t1 = bindBottom ? 1.0f : (rectHeight / texHeight);
} else if (bindBottom) {
t0 = 1.0f - (rectHeight / texHeight);
t1 = 1.0f;
} else {
sp10 = 0.5f - ((var_f3 / var_f5) * 0.5f);
sp8 = 0.5f + ((var_f3 / var_f5) * 0.5f);
t0 = 0.5f - (rectHeight / texHeight) / 2.0f;
t1 = 0.5f + (rectHeight / texHeight) / 2.0f;
}
if (param_3 & 2) {
swap(sp14, spC);
if (mirror & J2DMirror_X) {
swap(s0, s1);
}
if (mirror & J2DMirror_Y) {
swap(t0, t1);
}
if (param_3 & 1) {
swap(sp10, sp8);
}
s16 temp_r27 = J2DCast_F32_to_S16(s0, 8);
s16 temp_r28 = J2DCast_F32_to_S16(s1, 8);
s16 temp_r30 = J2DCast_F32_to_S16(t0, 8);
s16 temp_r31 = J2DCast_F32_to_S16(t1, 8);
s16 temp_r27 = J2DCast_F32_to_S16(sp14, 8);
s16 temp_r28 = J2DCast_F32_to_S16(spC, 8);
s16 temp_r30 = J2DCast_F32_to_S16(sp10, 8);
s16 temp_r31 = J2DCast_F32_to_S16(sp8, 8);
if (!param_4) {
if (!rotate90) {
param_0[0].set(temp_r27, temp_r30);
param_0[1].set(temp_r28, temp_r30);
param_0[2].set(temp_r28, temp_r31);
param_0[3].set(temp_r27, temp_r31);
param_0[2].set(temp_r27, temp_r31);
param_0[3].set(temp_r28, temp_r31);
} else {
param_0[0].set(temp_r27, temp_r31);
param_0[1].set(temp_r27, temp_r30);
+6 -6
View File
@@ -965,10 +965,10 @@ void J2DWindowEx::setAnimation(J2DAnmVtxColor* param_0) {
for (u8 i = 0; i < 4; i++) {
if (field_0x168[i] != 0xffff) {
for (u16 j = 0; j < uVar3; j++) {
J3DAnmVtxColorIndexDataItem* puVar1 = param_0->getAnmVtxColorIndexData(0, j);
J3DAnmVtxColorIndexData* puVar1 = param_0->getAnmVtxColorIndexData(0, j);
u16* indexPointer = param_0->getVtxColorIndexPointer(0);
u16* indexPointer2 = indexPointer + puVar1->offset;
for (u16 k = 0; k < puVar1->count; k++) {
u16* indexPointer2 = indexPointer + (u32)puVar1->mpData;
for (u16 k = 0; k < puVar1->mNum; k++) {
if (indexPointer2[k] == field_0x168[i]) {
mAnmVtxColor = param_0;
field_0x17c |= 1 << i;
@@ -1143,10 +1143,10 @@ const J2DAnmTransform* J2DWindowEx::animationPane(J2DAnmTransform const* param_0
for (u8 i = 0; i < 4; i++) {
if ((field_0x17c & (1 << i))) {
for (u16 j = 0; j < uVar3; j++) {
J3DAnmVtxColorIndexDataItem* puVar1 = mAnmVtxColor->getAnmVtxColorIndexData(0, j);
J3DAnmVtxColorIndexData* puVar1 = mAnmVtxColor->getAnmVtxColorIndexData(0, j);
u16* indexPointer = mAnmVtxColor->getVtxColorIndexPointer(0);
u16* indexPointer2 = indexPointer + puVar1->offset;
for (u16 k = 0; k < puVar1->count; k++) {
u16* indexPointer2 = indexPointer + (u32)puVar1->mpData;
for (u16 k = 0; k < puVar1->mNum; k++) {
if (indexPointer2[k] == field_0x168[i]) {
mAnmVtxColor->getColor(0, j, local_38[i]);
goto nexti;