Update some attempts, got a couple matches (#591)

* Update some attempts, got a couple matches

* More matches and updates

Signed-off-by: Taggerung <tyler.taggerung@email.com>
This commit is contained in:
Tyler McGavran
2024-04-02 15:00:35 -04:00
committed by GitHub
parent 893ecbe838
commit 6af653ad3d
16 changed files with 481 additions and 1888 deletions
+69 -70
View File
@@ -1642,52 +1642,47 @@ void func_8004C628(s32 arg0, s32 arg1, u32 arg2, u32 arg3, u8 *texture) {
gSPDisplayList(gDisplayListHead++, D_0D007EB8);
}
#ifdef MIPS_TO_C
//generated by m2c commit b7eac665cffd02361f73cec283ef16d0a35a0e5b
void func_8004C6FC(s16 arg0, s16 arg1, s8 *arg2, u32 arg3, u32 arg4) {
Gfx *temp_v0;
Gfx *temp_v0_2;
Gfx *temp_v0_4;
s32 temp_t5;
#ifdef NON_MATCHING
// https://decomp.me/scratch/TqXqn
// There's a weird fakematch concerning `athing`, don't know that to make of. Can't quite get it over the finish line though
void func_8004C6FC(s16 arg0, s16 arg1, u8 *texture, u32 width, u32 arg4) {
s32 temp_v0_3;
s32 var_s3;
s32 var_s4;
s8 *var_s5;
u32 temp_t3;
s32 athing;
s32 temp_t3;
u32 temp_t8;
u32 var_s0;
u32 var_s6;
u32 var_t2;
s32 heigth;
s32 var_s6;
u8 *textureCopy;
var_s4 = arg1 - (arg4 >> 1);
athing = arg0 - (width / 2);
var_s4 = arg1 - (arg4 / 2);
textureCopy = texture;
gSPDisplayList(gDisplayListHead++, D_0D007EF8);
temp_t8 = arg3 * arg4 * 4;
temp_t3 = temp_t8 >> 0xC;
var_s5 = arg2;
var_s6 = temp_t8;
var_t2 = temp_t3;
gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
if (temp_t8 & 0xFFF) {
var_t2 = temp_t3 + 1;
temp_t8 = width * arg4 * 4;
temp_t3 = temp_t8 / 4096;
if (temp_t8 % 4096) {
temp_t3++;
}
var_s0 = arg4 / var_t2;
var_s3 = 0;
if ((s32) var_t2 > 0) {
do {
temp_t5 = arg3 * var_s0 * 4;
load_texture_tile_rgba32_nomirror(var_s5, (s32) arg3, (s32) var_s0);
func_8004B950(arg0 - (arg3 >> 1), var_s4, (s32) arg3, (s32) var_s0, 1);
temp_v0_3 = var_s6 - temp_t5;
var_s5 += temp_t5;
if (temp_v0_3 < 0) {
var_s0 = var_s6 / arg3;
} else {
var_s6 = (u32) temp_v0_3;
}
var_s3 += 1;
var_s4 += var_s0;
} while (var_s3 < (s32) var_t2);
heigth = arg4 / temp_t3;
var_s6 = temp_t3;
for (var_s3 = 0; var_s3 < var_s6; var_s3++) {
load_texture_tile_rgba32_nomirror(textureCopy, width, heigth);
func_8004B950(athing, var_s4, width, heigth, 1);
temp_v0_3 = temp_t8 - (width * heigth * 4);
textureCopy += (width * heigth * 4);
if (temp_v0_3 < 0) {
heigth = temp_t8 / width;
} else {
temp_t8 = temp_v0_3;
}
// Weird fakematch that is a HUGE improvement
athing += var_s4 * 0;
var_s4 += heigth;
}
gSPDisplayList(gDisplayListHead++, D_0D007EB8);
}
#else
@@ -1893,30 +1888,22 @@ void func_8004D4E8(s32 arg0, s32 arg1, u8 *texture, s32 arg3, s32 arg4, s32 arg5
}
}
#ifdef NON_MATCHING
//generated by m2c commit b7eac665cffd02361f73cec283ef16d0a35a0e5b
//? func_80044F34(s8 *, s32, s32); /* extern */
UNUSED void func_8004D654(s32 arg0, s32 arg1, u8 *texture, f32 arg3, s32 arg4, s32 arg5, s32 arg6, UNUSED s32 arg7, s32 width, s32 arg9, UNUSED s32 argA, s32 height) {
u8 *img;
s32 var_s3;
void func_8004D654(s32 arg0, s32 arg1, u8 *texture, f32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 width, s32 arg9, s32 argA, s32 height) {
s32 i;
// Something weird with (width / 2).
var_s3 = arg1 - (width / 2);
img = texture;
s32 var_s3;
u8 *textureCopy;
var_s3 = arg1 - (arg9 / 2);
textureCopy = texture;
gSPDisplayList(gDisplayListHead++, D_0D008000);
func_8004B480(arg4, arg5, arg6);
for (i = 0; i < arg9 / height; i++) {
func_80044F34(img, width, height);
func_8004BB3C(arg0, var_s3, width, arg9, arg3);
img += (width * height) / 2;
for (i = 0; i < (arg9 / height); i++) {
func_80044F34(textureCopy, width, height);
func_8004BB3C(arg0, arg1, width, arg9, arg3);
textureCopy += (width * height) / 2;
var_s3 += height;
}
}
#else
GLOBAL_ASM("asm/non_matchings/render_objects/func_8004D654.s")
#endif
void func_8004D7B4(s32 arg0, s32 arg1, u8 *texture, s32 arg3, s32 arg4) {
s32 sp5C;
@@ -2331,36 +2318,47 @@ void func_8004F020(s32 arg0) {
}
#ifdef NON_MATCHING
//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Dec-20-2023
// https://decomp.me/scratch/FxA1w
/**
* characterId of 8 appears to be a type of null check or control flow alteration.
*/
#define EXPLICIT_AND 1
void func_8004F168(s32 arg0, s32 playerId, s32 characterId) {
f32 thing0;
f32 thing1;
s16 temp_a0;
s16 temp_a1;
Player *player = &gPlayerOne[playerId];
s32 temp_a0;
s32 temp_a1;
if (gPlayerOne->type & PLAYER_EXISTS) {
temp_a0 = ((D_8018D2C0[arg0] + D_8018D2F0) - ((s16) D_8018D2B0 / 2)) + D_8018D2E0 + (s32) (player->pos[0] * D_8018D2A0);
temp_a1 = ((D_8018D2D8[arg0] + D_8018D2F8) - ((s16) D_8018D2B8 / 2)) + D_8018D2E8 + (s32) (player->pos[2] * D_8018D2A0);
if (player->type & (1 << 15)) {
thing0 = player->pos[0] * D_8018D2A0;
thing1 = player->pos[2] * D_8018D2A0;
temp_a0 = ((D_8018D2C0[arg0] + D_8018D2F0) - (D_8018D2B0 / 2)) + D_8018D2E0 + (s16)(thing0);
temp_a1 = ((D_8018D2D8[arg0] + D_8018D2F8) - (D_8018D2B8 / 2)) + D_8018D2E8 + (s16)(thing1);
if (characterId != 8) {
if ((gGPCurrentRaceRankByPlayerId[playerId] == 0) && (gModeSelection != BATTLE) && (gModeSelection != TIME_TRIALS)) {
func_80046424((s32) temp_a0, (s32) temp_a1, (player->rotation[1] + 0x8000) & 0xFFFF, 1.0f, (u8 *) common_texture_minimap_kart_character[characterId], common_vtx_player_minimap_icon, 8, 8, 8, 8);
// return;
if ((gGPCurrentRaceRankByPlayerId[playerId] == 0) && (gModeSelection != 3) && (gModeSelection != 1)) {
#if EXPLICIT_AND == 1
func_80046424(temp_a0, temp_a1, (player->rotation[1] + 0x8000) & 0xFFFF, 1.0f, common_texture_minimap_kart_character[characterId], common_vtx_player_minimap_icon, 8, 8, 8, 8);
#else
func_80046424(temp_a0, temp_a1, player->rotation[1] + 0x8000, 1.0f, common_texture_minimap_kart_character[characterId], common_vtx_player_minimap_icon, 8, 8, 8, 8);
#endif
} else {
func_800463B0((s32) temp_a0, (s32) temp_a1, (player->rotation[1] + 0x8000) & 0xFFFF, 1.0f, (u8 *) common_texture_minimap_kart_character[characterId], common_vtx_player_minimap_icon, 8, 8, 8, 8);
#if EXPLICIT_AND == 1
func_800463B0(temp_a0, temp_a1, (player->rotation[1] + 0x8000) & 0xFFFF, 1.0f, common_texture_minimap_kart_character[characterId], common_vtx_player_minimap_icon, 8, 8, 8, 8);
#else
func_800463B0(temp_a0, temp_a1, player->rotation[1] + 0x8000, 1.0f, common_texture_minimap_kart_character[characterId], common_vtx_player_minimap_icon, 8, 8, 8, 8);
#endif
}
//return;
} else {
if (gGPCurrentRaceRankByPlayerId[playerId] == 0) {
func_8004C450((s32) temp_a0, (s32) temp_a1, 8, 8, (u8 *) common_texture_minimap_progress_dot);
//return;
func_8004C450(temp_a0, temp_a1, 8, 8, (u8 *) common_texture_minimap_progress_dot);
} else {
draw_hud_2d_texture((s32) temp_a0, (s32) temp_a1, 8, 8, (u8 *) common_texture_minimap_progress_dot);
func_8004C364(temp_a0, temp_a1, 8, 8, (u8 *) common_texture_minimap_progress_dot);
}
}
}
}
#undef EXPLICIT_AND
#else
GLOBAL_ASM("asm/non_matchings/render_objects/func_8004F168.s")
#endif
@@ -2798,6 +2796,7 @@ void func_80050C68(void) {
// Something about the handling of the `player` variable is weird.
// All commands are present and correct, 2 of them are out of position
// https://decomp.me/scratch/PvJ5D
void func_80050E34(s32 playerId, s32 arg1) {
s32 objectIndex;
s32 spD0;
@@ -3802,7 +3801,7 @@ void func_80054E10(s32 objectIndex) {
void func_80054EB8(UNUSED s32 unused) {
s32 someIndex;
for (someIndex = 0; someIndex < NUM_MAX_MOLES; someIndex++) {
for (someIndex = 0; someIndex < NUM_TOTAL_MOLES; someIndex++) {
func_80054E10(gObjectParticle1[someIndex]);
}
}