From 35d22a3a63a26c6392f818cc179985aaf65dfe72 Mon Sep 17 00:00:00 2001 From: Faschz Date: Sun, 7 Feb 2021 14:30:31 -0600 Subject: [PATCH] Decompile func_80052988 Also cleaned up some misc. functions. Mostly func_80053664 which is used to update throttle/brake of the player's kart based on controller input. --- .../unknown_043920/func_80052988.s | 136 ------------------ include/structs.h | 92 ++++++------ src/unknown_043920.c | 129 +++++++++++------ 3 files changed, 137 insertions(+), 220 deletions(-) delete mode 100644 asm/non_matchings/unknown_043920/func_80052988.s diff --git a/asm/non_matchings/unknown_043920/func_80052988.s b/asm/non_matchings/unknown_043920/func_80052988.s deleted file mode 100644 index c0ba38c1..00000000 --- a/asm/non_matchings/unknown_043920/func_80052988.s +++ /dev/null @@ -1,136 +0,0 @@ -glabel func_80052988 -/* 053588 80052988 8FAE0014 */ lw $t6, 0x14($sp) -/* 05358C 8005298C 8FAF001C */ lw $t7, 0x1c($sp) -/* 053590 80052990 3C198012 */ lui $t9, %hi(D_8011D55C) # $t9, 0x8012 -/* 053594 80052994 01CF0019 */ multu $t6, $t7 -/* 053598 80052998 8F39D55C */ lw $t9, %lo(D_8011D55C)($t9) -/* 05359C 8005299C 2401FFFF */ li $at, -1 -/* 0535A0 800529A0 0000C012 */ mflo $t8 -/* 0535A4 800529A4 AFB80014 */ sw $t8, 0x14($sp) -/* 0535A8 800529A8 17210006 */ bne $t9, $at, .L800529C4 -/* 0535AC 800529AC 28C10003 */ slti $at, $a2, 3 -/* 0535B0 800529B0 14200004 */ bnez $at, .L800529C4 -/* 0535B4 800529B4 00000000 */ nop -/* 0535B8 800529B8 A080003B */ sb $zero, 0x3b($a0) -/* 0535BC 800529BC 03E00008 */ jr $ra -/* 0535C0 800529C0 A0A001F2 */ sb $zero, 0x1f2($a1) - -.L800529C4: -/* 0535C4 800529C4 8082003B */ lb $v0, 0x3b($a0) -/* 0535C8 800529C8 00000000 */ nop -/* 0535CC 800529CC 14400029 */ bnez $v0, .L80052A74 -/* 0535D0 800529D0 00000000 */ nop -/* 0535D4 800529D4 8FA20018 */ lw $v0, 0x18($sp) -/* 0535D8 800529D8 00000000 */ nop -/* 0535DC 800529DC 30480001 */ andi $t0, $v0, 1 -/* 0535E0 800529E0 1100001D */ beqz $t0, .L80052A58 -/* 0535E4 800529E4 00000000 */ nop -/* 0535E8 800529E8 84820018 */ lh $v0, 0x18($a0) -/* 0535EC 800529EC 8FAD001C */ lw $t5, 0x1c($sp) -/* 0535F0 800529F0 28410029 */ slti $at, $v0, 0x29 -/* 0535F4 800529F4 1420000E */ bnez $at, .L80052A30 -/* 0535F8 800529F8 000D7080 */ sll $t6, $t5, 2 -/* 0535FC 800529FC 8FA9001C */ lw $t1, 0x1c($sp) -/* 053600 80052A00 00000000 */ nop -/* 053604 80052A04 00095080 */ sll $t2, $t1, 2 -/* 053608 80052A08 004A5823 */ subu $t3, $v0, $t2 -/* 05360C 80052A0C A48B0018 */ sh $t3, 0x18($a0) -/* 053610 80052A10 848C0018 */ lh $t4, 0x18($a0) -/* 053614 80052A14 00000000 */ nop -/* 053618 80052A18 29810029 */ slti $at, $t4, 0x29 -/* 05361C 80052A1C 1020004F */ beqz $at, .L80052B5C -/* 053620 80052A20 00000000 */ nop -/* 053624 80052A24 A086003B */ sb $a2, 0x3b($a0) -/* 053628 80052A28 03E00008 */ jr $ra -/* 05362C 80052A2C A4870018 */ sh $a3, 0x18($a0) - -.L80052A30: -/* 053630 80052A30 004E7821 */ addu $t7, $v0, $t6 -/* 053634 80052A34 A48F0018 */ sh $t7, 0x18($a0) -/* 053638 80052A38 84980018 */ lh $t8, 0x18($a0) -/* 05363C 80052A3C 00000000 */ nop -/* 053640 80052A40 2B010028 */ slti $at, $t8, 0x28 -/* 053644 80052A44 14200045 */ bnez $at, .L80052B5C -/* 053648 80052A48 00000000 */ nop -/* 05364C 80052A4C A086003B */ sb $a2, 0x3b($a0) -/* 053650 80052A50 03E00008 */ jr $ra -/* 053654 80052A54 A4870018 */ sh $a3, 0x18($a0) - -.L80052A58: -/* 053658 80052A58 A086003B */ sb $a2, 0x3b($a0) -/* 05365C 80052A5C A4870018 */ sh $a3, 0x18($a0) -/* 053660 80052A60 90B901F3 */ lbu $t9, 0x1f3($a1) -/* 053664 80052A64 00000000 */ nop -/* 053668 80052A68 3328FF7F */ andi $t0, $t9, 0xff7f -/* 05366C 80052A6C 03E00008 */ jr $ra -/* 053670 80052A70 A0A801F3 */ sb $t0, 0x1f3($a1) - -.L80052A74: -/* 053674 80052A74 14C20037 */ bne $a2, $v0, .L80052B54 -/* 053678 80052A78 00000000 */ nop -/* 05367C 80052A7C 8FA20018 */ lw $v0, 0x18($sp) -/* 053680 80052A80 8FB80014 */ lw $t8, 0x14($sp) -/* 053684 80052A84 30490002 */ andi $t1, $v0, 2 -/* 053688 80052A88 11200024 */ beqz $t1, .L80052B1C -/* 05368C 80052A8C 00000000 */ nop -/* 053690 80052A90 90AA01F3 */ lbu $t2, 0x1f3($a1) -/* 053694 80052A94 8FA80014 */ lw $t0, 0x14($sp) -/* 053698 80052A98 314B0080 */ andi $t3, $t2, 0x80 -/* 05369C 80052A9C 1160000F */ beqz $t3, .L80052ADC -/* 0536A0 80052AA0 00000000 */ nop -/* 0536A4 80052AA4 848C0018 */ lh $t4, 0x18($a0) -/* 0536A8 80052AA8 8FAD0014 */ lw $t5, 0x14($sp) -/* 0536AC 80052AAC 24180028 */ li $t8, 40 -/* 0536B0 80052AB0 018D7023 */ subu $t6, $t4, $t5 -/* 0536B4 80052AB4 A48E0018 */ sh $t6, 0x18($a0) -/* 0536B8 80052AB8 848F0018 */ lh $t7, 0x18($a0) -/* 0536BC 80052ABC 00000000 */ nop -/* 0536C0 80052AC0 1DE00026 */ bgtz $t7, .L80052B5C -/* 0536C4 80052AC4 00000000 */ nop -/* 0536C8 80052AC8 A080003B */ sb $zero, 0x3b($a0) -/* 0536CC 80052ACC A0A001F2 */ sb $zero, 0x1f2($a1) -/* 0536D0 80052AD0 A4980018 */ sh $t8, 0x18($a0) -/* 0536D4 80052AD4 03E00008 */ jr $ra -/* 0536D8 80052AD8 A0A001F3 */ sb $zero, 0x1f3($a1) - -.L80052ADC: -/* 0536DC 80052ADC 84990018 */ lh $t9, 0x18($a0) -/* 0536E0 80052AE0 8FA30010 */ lw $v1, 0x10($sp) -/* 0536E4 80052AE4 03284821 */ addu $t1, $t9, $t0 -/* 0536E8 80052AE8 A4890018 */ sh $t1, 0x18($a0) -/* 0536EC 80052AEC 848A0018 */ lh $t2, 0x18($a0) -/* 0536F0 80052AF0 304C0004 */ andi $t4, $v0, 4 -/* 0536F4 80052AF4 0143082A */ slt $at, $t2, $v1 -/* 0536F8 80052AF8 14200018 */ bnez $at, .L80052B5C -/* 0536FC 80052AFC 246BFFFF */ addiu $t3, $v1, -1 -/* 053700 80052B00 15800016 */ bnez $t4, .L80052B5C -/* 053704 80052B04 A48B0018 */ sh $t3, 0x18($a0) -/* 053708 80052B08 90AD01F3 */ lbu $t5, 0x1f3($a1) -/* 05370C 80052B0C 00000000 */ nop -/* 053710 80052B10 35AE0080 */ ori $t6, $t5, 0x80 -/* 053714 80052B14 03E00008 */ jr $ra -/* 053718 80052B18 A0AE01F3 */ sb $t6, 0x1f3($a1) - -.L80052B1C: -/* 05371C 80052B1C 848F0018 */ lh $t7, 0x18($a0) -/* 053720 80052B20 8FA30010 */ lw $v1, 0x10($sp) -/* 053724 80052B24 01F8C821 */ addu $t9, $t7, $t8 -/* 053728 80052B28 A4990018 */ sh $t9, 0x18($a0) -/* 05372C 80052B2C 84880018 */ lh $t0, 0x18($a0) -/* 053730 80052B30 24090028 */ li $t1, 40 -/* 053734 80052B34 0103082A */ slt $at, $t0, $v1 -/* 053738 80052B38 14200008 */ bnez $at, .L80052B5C -/* 05373C 80052B3C 00000000 */ nop -/* 053740 80052B40 A080003B */ sb $zero, 0x3b($a0) -/* 053744 80052B44 A0A001F2 */ sb $zero, 0x1f2($a1) -/* 053748 80052B48 A4890018 */ sh $t1, 0x18($a0) -/* 05374C 80052B4C 03E00008 */ jr $ra -/* 053750 80052B50 A0A001F3 */ sb $zero, 0x1f3($a1) - -.L80052B54: -/* 053754 80052B54 A4870018 */ sh $a3, 0x18($a0) -/* 053758 80052B58 A086003B */ sb $a2, 0x3b($a0) -.L80052B5C: -/* 05375C 80052B5C 03E00008 */ jr $ra -/* 053760 80052B60 00000000 */ nop - diff --git a/include/structs.h b/include/structs.h index 28080b02..b76212c4 100644 --- a/include/structs.h +++ b/include/structs.h @@ -18,7 +18,7 @@ typedef struct MenuElement { /* 0x0E */ u8 filterBlue; /* 0x0F */ u8 filterAlpha; // 0 = no filter color, 0xFF = full color. /* 0x10 */ u8 opacity; - /* 0x11 */ u8 textType; + /* 0x11 */ u8 textType; /* 0x12 */ u8 textAlignFlags; /* 0x13 */ u8 unk13; // Source type? 0 = ascii text, 7 = texture? union { @@ -26,8 +26,8 @@ typedef struct MenuElement { /* 0x14 */ u32* texture; // Pointer to texture to be displayed on the screen. } source; /* 0x18 */ u16 backgroundRed; - /* 0x1A */ u16 backgroundGreen; - /* 0x1C */ u16 backgroundBlue; + /* 0x1A */ u16 backgroundGreen; + /* 0x1C */ u16 backgroundBlue; /* 0x1E */ u16 backgroundAlpha; // 0x0000 = No background, 0x00FF = full background color. } MenuElement; @@ -113,26 +113,26 @@ typedef struct LevelHeader { /* 0x02 */ u8 unk2; /* 0x03 */ u8 unk3; /* 0x04 */ u8 unk4[4]; - + /* 0x08 */ f32 course_height; - + /* 0x0C */ u8 padC[0x14]; - + /* 0x20 */ s32 *unk20; - + /* 0x24 */ u8 pad24[0x10]; /* 0x34 */ s16 geometry; /* 0x36 */ s16 collectables; // Objects such as bananas, balloons, etc. /* 0x38 */ s16 skybox; - + // Fog related? /* 0x3A */ s16 unk3A; /* 0x3C */ s16 unk3C; - /* 0x3E */ s16 fogR; + /* 0x3E */ s16 fogR; /* 0x40 */ s16 fogG; /* 0x42 */ s16 fogB; - + /* 0x44 */ u8 unk44[0x5]; /* 0x49 */ s8 unk49; @@ -143,13 +143,13 @@ typedef struct LevelHeader { /* 0x4E */ u8 available_vehicles; /* 0x4F */ u8 unk4F[3]; - + /* 0x52 */ u8 music; /* 0x53 */ u8 unk53; /* 0x54 */ u16 instruments; - + /* 0x56 */ u8 pad56[0x1E]; - + /* 0x74 */ s8 *unk74[7]; // Weather related? @@ -160,7 +160,7 @@ typedef struct LevelHeader { /* 0x96 */ s16 unk96; /* 0x98 */ s16 unk98; /* 0x9A */ s16 unk9A; - + /* 0x9C */ s8 unk9C; /* 0x9D */ u8 unk9D; /* 0x9E */ u8 unk9E; @@ -170,7 +170,7 @@ typedef struct LevelHeader { /* 0xA8 */ u16 unkA8; /* 0xAA */ u16 unkAA; /* 0xAC */ s8 *unkAC; - + /* 0xB0 */ u8 padB0[0x3]; /* 0xB3 */ u8 unkB3; /* 0xB3 */ u8 unkB4; @@ -272,12 +272,17 @@ typedef struct Player_64 { f32 unk78; f32 unk7C; f32 unk80; - u8 pad84[0x4C]; + u8 pad84[0x30]; + /* 0xB4 */ f32 throttle; + /* 0xB8 */ f32 brake; + u8 padBC[0x14]; f32 unkD0; u8 padD0[0x24]; u32 unkF8; u8 unkFC; - u8 padFD[0x63]; + u8 padFD[0xB]; + s32 unk108; + u8 pad10C[0x54]; s16 unk160; s16 unk162; s16 unk164; @@ -290,12 +295,15 @@ typedef struct Player_64 { u16 unk1BA; u8 pad1BC[0x1B]; s8 unk1D7; + u8 pad1D8[0x1A]; + u8 unk1F2; + u8 unk1F3; } Player_64; - + typedef struct Player_68{ u8 pad00[0x20]; s8 unk20; - } Player_68; + } Player_68; /* Size: 0x0630 bytes */ typedef struct Player { /* 0x0000 */ s16 y_rotation; @@ -314,7 +322,7 @@ typedef struct Player { /* 0x0028 */ u32 unk28; /* 0x002C */ s16 unk2C; - + /* 0x002E */ s16 unk2E; /* 0x0030 */ f32 unk30; /* 0x0034 */ f32 unk34; @@ -322,7 +330,7 @@ typedef struct Player { /* 0x0039 */ u8 unk39; /* 0x003A */ s8 unk3A; - /* 0x003B */ u8 unk3B; + /* 0x003B */ s8 unk3B; /* 0x003C */ Player_3C* unk3C; /* 0x0040 */ Player_40 *descriptor_ptr; @@ -343,7 +351,7 @@ typedef struct Player { /* 0x0074 */ u32 unk74; /* 0x0078 */ s32 unk78; - + union { struct { s16 upper; @@ -355,7 +363,7 @@ typedef struct Player { /* 0x0080 */ void *unk80; /* 0x0084 */ u32 unk84; /* 0x0088 */ u32 unk88; - + /* 0x008C */ u32 unk8C; /* 0x0090 */ u32 unk90; /* 0x0094 */ u32 unk94; @@ -363,11 +371,11 @@ typedef struct Player { /* 0x0098 */ s16 playerIndex; // -1 = AI Controlled, 0 to 3 = Player controlled /* 0x009A */ u8 unk9A; /* 0x009B */ u8 characterId; // Affects minimap color, horn, voice, etc. - + /* 0x009C */ u32 unk9C; /* 0x00A0 */ f32 unkA0; - + /* 0x00A4 */ u32 unkA4; /* 0x00A8 */ u32 unkA8; /* 0x00AC */ u32 unkAC; @@ -376,16 +384,16 @@ typedef struct Player { /* 0x00B8 */ u32 unkB8; /* 0x00BC */ u32 unkBC; /* 0x00C0 */ u32 unkc0; - + /* 0x00C4 */ f32 velocity; /* 0x00C8 */ f32 lateral_velocity; - + u32 unkCC[10]; // Not an array. Unknown values. /* 0x00F4 */ f32 prev_x_position; /* 0x00F8 */ f32 prev_y_position; /* 0x00FC */ f32 prev_z_position; - + /* 0x0100 */ u32 unk100; /* 0x0104 */ u32 unk104; /* 0x0108 */ u32 unk108; @@ -427,25 +435,25 @@ typedef struct Player { /* 0x0194 */ f32 unk194; /* 0x0198 */ f32 unk198; /* 0x019C */ f32 unk19C; - + u32 unk1A0[8]; // Not an array. Unknown values. - + /* 0x01C0 */ u32 lap_times[3]; - + /* 0x01CC */ u32 unk1CC; /* 0x01D0 */ u32 unk1D0; /* 0x01D4 */ u32 unk1D4; /* 0x01D8 */ u32 unk1D8; /* 0x01DC */ void *held_obj_ptr; - + u32 unk1E0[10]; // Not an array. Unknown values. /* 0x0208 */ u16 unk208; /* 0x020A */ u8 balloon_type; /* 0x020B */ u8 balloon_quantity; /* 0x020C */ u8 balloon_level; - + /* 0x020D */ u8 unk20D; /* 0x020E */ u8 unk20E; /* 0x020F */ u8 unk20F; @@ -464,13 +472,13 @@ typedef struct Player { /* 0x0273 */ u8 spinout_timer; /* 0x0274 */ u8 wheel_surfaces[4]; - + /* 0x0278 */ u32 unk278; /* 0x027C */ u16 unk27C; /* 0x027E */ u8 drift_direction; /* 0x027F */ u8 unk27F; - + /* 0x0280 */ u32 unk280; /* 0x0284 */ u8 unk284; @@ -478,7 +486,7 @@ typedef struct Player { /* 0x0286 */ u8 unk286; /* 0x0287 */ u8 boost_sound; /* 0x0288 */ u32 unk288; - + /* 0x028C */ u16 unk28C; /* 0x028E */ u8 unk28E; @@ -486,16 +494,16 @@ typedef struct Player { /* 0x0290 */ u8 indicator_type; /* 0x0291 */ s8 indicator_timer; /* 0x0292 */ u16 unk292; - + u32 unk294[11]; // Not an array. Unknown values. /* 0x02C0 */ f32 unk2C0; - + /* 0x02C4 */ u8 red; /* 0x02C5 */ u8 blue; /* 0x02C6 */ u8 green; /* 0x02C7 */ u8 alpha; - + /* 0x02C8 */ u32 unk2C8; /* 0x02CC */ u32 unk2CC; /* 0x02D0 */ u32 unk2D0; @@ -505,7 +513,7 @@ typedef struct Player { /* 0x02DC */ u16 unk2DC; /* 0x02DE */ u16 unk2DE; /* 0x02E0 */ u16 unk2E0; - + /* 0x02E2 */ u16 unk2E2; /* 0x02E4 */ u32 unk2E4; @@ -530,7 +538,7 @@ typedef struct Player { /* 0x031C */ f32 unk31C; /* 0x0320 */ f32 unk320; /* 0x0324 */ f32 unk324; - + /* 0x0328 */ u32 unk328; /* 0x032C */ u32 unk32C; /* 0x0330 */ u32 unk330; @@ -543,7 +551,7 @@ typedef struct Player { /* 0x0348 */ void *unk348; /* 0x034C */ void *unk34C; /* 0x0350 */ void *unk350; - + /* 0x0354 */ u32 unk354; /* 0x0358 */ u32 unk358; /* 0x035C */ u32 unk35C; diff --git a/src/unknown_043920.c b/src/unknown_043920.c index 8b8b3394..c7d6b2b0 100644 --- a/src/unknown_043920.c +++ b/src/unknown_043920.c @@ -3,6 +3,7 @@ #include "types.h" #include "macros.h" +#include "structs.h" extern s32 D_800DCB50; extern s16 D_800DCB54; @@ -65,7 +66,7 @@ void func_8004F77C(unk8004F77C *arg0) { if ((D_8011D528 & 0x4000) != 0) { arg0->unk20A |= 0x80; } - + temp = arg0->unk20A & 0xF; if ((arg0->unk20A & 0xC0) != 0) { temp++; @@ -78,7 +79,7 @@ void func_8004F77C(unk8004F77C *arg0) { temp = 0; } } - + arg0->unk20A = (arg0->unk20A & 0xFFF0) | temp; } @@ -116,7 +117,67 @@ void func_8005234C(unk8005234C *arg0) { GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80052388.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_8005250C.s") -GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80052988.s") + +void func_80052988(Player* arg0, Player_64* arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7) { + arg5 *= arg7; + + if ((D_8011D55C == -1) && (arg2 >= 3)) { + arg0->unk3B = 0; + arg1->unk1F2 = 0; + } else if (arg0->unk3B == 0) { + if (arg6 & 1) { + if (arg0->unk18 >= 0x29) { + arg0->unk18 -= arg7 * 4; + if (arg0->unk18 < 0x29) { + arg0->unk3B = arg2; + arg0->unk18 = arg3; + } + } else { + arg0->unk18 += arg7 * 4; + if (arg0->unk18 >= 0x28) { + arg0->unk3B = arg2; + arg0->unk18 = arg3; + } + } + } else { + arg0->unk3B = arg2; + arg0->unk18 = arg3; + arg1->unk1F3 &= ~0x80; + } + } else if (arg0->unk3B == arg2) { + if (arg6 & 2) { + if (arg1->unk1F3 & 0x80) { + arg0->unk18 -= arg5; + if (arg0->unk18 <= 0) { + arg0->unk3B = 0; + arg1->unk1F2 = 0; + arg0->unk18 = 0x28; + arg1->unk1F3 = 0; + } + } else { + arg0->unk18 += arg5; + if (arg0->unk18 >= arg4) { + arg0->unk18 = arg4 - 1; + if ((arg6 & 4) == 0) { + arg1->unk1F3 |= 0x80; + } + } + } + } else { + arg0->unk18 += arg5; + if (arg0->unk18 >= arg4) { + arg0->unk3B = 0; + arg1->unk1F2 = 0; + arg0->unk18 = 0x28; + arg1->unk1F3 = 0; + } + } + } else { + arg0->unk18 = arg3; + arg0->unk3B = arg2; + } +} + GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80052B64.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80052D7C.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80053478.s") @@ -171,40 +232,27 @@ void func_800535C4(unk800535C4 *arg0, unk800535C4_2 *arg1) { D_8011D510.unk14 = 0; D_8011D510.unk8 = 1; func_8006FE74(&sp30, &D_8011D510); - + func_8006F64C(&sp30, 0, -1, 0, &arg1->unkA0, &arg1->unkA4, &arg1->unk9C); } -typedef struct unk80053664 { - u8 unk0[0xB4]; - f32 unkB4; - f32 unkB8; -} unk80053664; - -void func_80053664(unk80053664 *arg0) { - f64 temp_f0; - f64 temp_f0_2; - f64 temp_f0_3; - - temp_f0 = (f64) arg0->unkB4; - - if (0.0 < temp_f0) { - arg0->unkB4 = (f32) (temp_f0 - D_800E6768); +void func_80053664(Player_64 *arg0) { + if (arg0->throttle > 0.0) { + arg0->throttle -= D_800E6768; } - - if ((D_8011D528 & 0x8000) != 0) { - arg0->unkB4 = 1.0f; + + if (D_8011D528 & 0x8000) { + arg0->throttle = 1.0f; } - - if ((D_8011D528 & 0x4000) != 0) { - temp_f0_2 = (f64) arg0->unkB8; - if (temp_f0_2 < 1.0) { - arg0->unkB8 = (f32) (temp_f0_2 + D_800E6770); + + if (D_8011D528 & 0x4000) { + if (arg0->brake < 1.0) { + arg0->brake += D_800E6770; } } else { - temp_f0_3 = (f64) arg0->unkB8; - if (D_800E6778 < temp_f0_3) { - arg0->unkB8 = (f32) (temp_f0_3 - D_800E6780); + //! @bug Will cause a negative brake value resulting in higher velocity + if (arg0->brake > D_800E6778) { + arg0->brake -= D_800E6780; } } } @@ -220,7 +268,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80055EC0.s") /* Unknown Size */ typedef struct unk800570A4 { u8 unk0[0x108]; - s32 unk108; + s32 unk108; u8 unk10C[0x102]; s16 unk20E; s8 unk210; @@ -264,11 +312,10 @@ void func_80057048(unk800570A4_2 *arg0, s32 arg1) { } } -unk800570A4 *func_800570A4(unk800570A4_2 *arg0, s32 arg1, s32 arg2) { +void func_800570A4(unk800570A4_2 *arg0, s32 arg1, s32 arg2) { unk800570A4 *temp = arg0->unk64; temp->unk20E = arg1; temp->unk210 = arg2; - return temp; } GLOBAL_ASM("asm/non_matchings/unknown_043920/func_800570B8.s") @@ -289,7 +336,7 @@ void func_800579B0(unk800579B0 *arg0, s32 arg1, f32 arg2) { temp = D_8011D534 - arg0->unk1E1; temp2 = (s32)((f64)((f32)temp * arg2) * 0.125); - + if (temp != 0 && temp2 == 0) { if (temp > 0) { temp2 = 1; @@ -298,7 +345,7 @@ void func_800579B0(unk800579B0 *arg0, s32 arg1, f32 arg2) { temp2 = -1; } } - + arg0->unk1E1 = arg0->unk1E1 + temp2; } @@ -356,7 +403,7 @@ s32 func_800599B8(s32 arg0, s32 arg1, s16 arg2, s32 arg3, s32 arg4) { D_8011D5AC = -1; } } - + return temp_v0; } @@ -395,11 +442,11 @@ void func_8005A3D0(void) { s32 i; s32 count = 0; u8* temp = (u8*)&func_8003B4BC; - + for(i = 0; i < D_800DCB50; i++) { count += temp[i]; } - + if (count != D_800DCDD0) { D_800DCB54 = 0x800; } @@ -423,7 +470,7 @@ typedef struct unk8005C270 { void func_8005C270(unk8005C270 *arg0) { s32 temp = func_8001BA64(); - + arg0->unk192--; if (arg0->unk192 < 0) { arg0->unk192 += temp; @@ -431,10 +478,8 @@ void func_8005C270(unk8005C270 *arg0) { arg0->unk193--; } } - + if (arg0->unk190 >= -31999) { arg0->unk190--; } } - -