diff --git a/asm/non_matchings/unknown_032760/func_8003DFCC.s b/asm/non_matchings/unknown_032760/func_8003DFCC.s deleted file mode 100644 index a20f71a6..00000000 --- a/asm/non_matchings/unknown_032760/func_8003DFCC.s +++ /dev/null @@ -1,104 +0,0 @@ -glabel func_8003DFCC -/* 03EBCC 8003DFCC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 03EBD0 8003DFD0 AFBF0014 */ sw $ra, 0x14($sp) -/* 03EBD4 8003DFD4 8C8F004C */ lw $t7, 0x4c($a0) -/* 03EBD8 8003DFD8 240E0002 */ li $t6, 2 -/* 03EBDC 8003DFDC A5EE0014 */ sh $t6, 0x14($t7) -/* 03EBE0 8003DFE0 8C99004C */ lw $t9, 0x4c($a0) -/* 03EBE4 8003DFE4 24180004 */ li $t8, 4 -/* 03EBE8 8003DFE8 A3380011 */ sb $t8, 0x11($t9) -/* 03EBEC 8003DFEC 8C89004C */ lw $t1, 0x4c($a0) -/* 03EBF0 8003DFF0 24080014 */ li $t0, 20 -/* 03EBF4 8003DFF4 A1280010 */ sb $t0, 0x10($t1) -/* 03EBF8 8003DFF8 AFA5001C */ sw $a1, 0x1c($sp) -/* 03EBFC 8003DFFC 0C0270C3 */ jal get_filtered_cheats -/* 03EC00 8003E000 AFA40018 */ sw $a0, 0x18($sp) -/* 03EC04 8003E004 8FA40018 */ lw $a0, 0x18($sp) -/* 03EC08 8003E008 8FA5001C */ lw $a1, 0x1c($sp) -/* 03EC0C 8003E00C 00025380 */ sll $t2, $v0, 0xe -/* 03EC10 8003E010 05410003 */ bgez $t2, .L8003E020 -/* 03EC14 8003E014 304B8000 */ andi $t3, $v0, 0x8000 -/* 03EC18 8003E018 10000013 */ b .L8003E068 -/* 03EC1C 8003E01C A0A00009 */ sb $zero, 9($a1) -.L8003E020: -/* 03EC20 8003E020 11600004 */ beqz $t3, .L8003E034 -/* 03EC24 8003E024 00026BC0 */ sll $t5, $v0, 0xf -/* 03EC28 8003E028 240C0001 */ li $t4, 1 -/* 03EC2C 8003E02C 1000000E */ b .L8003E068 -/* 03EC30 8003E030 A0AC0009 */ sb $t4, 9($a1) -.L8003E034: -/* 03EC34 8003E034 05A10004 */ bgez $t5, .L8003E048 -/* 03EC38 8003E038 00027B40 */ sll $t7, $v0, 0xd -/* 03EC3C 8003E03C 240E0002 */ li $t6, 2 -/* 03EC40 8003E040 10000009 */ b .L8003E068 -/* 03EC44 8003E044 A0AE0009 */ sb $t6, 9($a1) -.L8003E048: -/* 03EC48 8003E048 05E10004 */ bgez $t7, .L8003E05C -/* 03EC4C 8003E04C 0002CB00 */ sll $t9, $v0, 0xc -/* 03EC50 8003E050 24180003 */ li $t8, 3 -/* 03EC54 8003E054 10000004 */ b .L8003E068 -/* 03EC58 8003E058 A0B80009 */ sb $t8, 9($a1) -.L8003E05C: -/* 03EC5C 8003E05C 07210002 */ bgez $t9, .L8003E068 -/* 03EC60 8003E060 24080004 */ li $t0, 4 -/* 03EC64 8003E064 A0A80009 */ sb $t0, 9($a1) -.L8003E068: -/* 03EC68 8003E068 90A90008 */ lbu $t1, 8($a1) -/* 03EC6C 8003E06C 00000000 */ nop -/* 03EC70 8003E070 29210006 */ slti $at, $t1, 6 -/* 03EC74 8003E074 14200002 */ bnez $at, .L8003E080 -/* 03EC78 8003E078 00000000 */ nop -/* 03EC7C 8003E07C A0A00008 */ sb $zero, 8($a1) -.L8003E080: -/* 03EC80 8003E080 8C8B0040 */ lw $t3, 0x40($a0) -/* 03EC84 8003E084 808A003A */ lb $t2, 0x3a($a0) -/* 03EC88 8003E088 816C0055 */ lb $t4, 0x55($t3) -/* 03EC8C 8003E08C 00000000 */ nop -/* 03EC90 8003E090 014C082A */ slt $at, $t2, $t4 -/* 03EC94 8003E094 14200002 */ bnez $at, .L8003E0A0 -/* 03EC98 8003E098 00000000 */ nop -/* 03EC9C 8003E09C A080003A */ sb $zero, 0x3a($a0) -.L8003E0A0: -/* 03ECA0 8003E0A0 90AD0009 */ lbu $t5, 9($a1) -/* 03ECA4 8003E0A4 3C014120 */ li $at, 0x41200000 # 10.000000 -/* 03ECA8 8003E0A8 A08D003A */ sb $t5, 0x3a($a0) -/* 03ECAC 8003E0AC 808E003A */ lb $t6, 0x3a($a0) -/* 03ECB0 8003E0B0 44811000 */ mtc1 $at, $f2 -/* 03ECB4 8003E0B4 AC8E0078 */ sw $t6, 0x78($a0) -/* 03ECB8 8003E0B8 90B8000A */ lbu $t8, 0xa($a1) -/* 03ECBC 8003E0BC 3C014280 */ li $at, 0x42800000 # 64.000000 -/* 03ECC0 8003E0C0 44982000 */ mtc1 $t8, $f4 -/* 03ECC4 8003E0C4 44813000 */ mtc1 $at, $f6 -/* 03ECC8 8003E0C8 46802020 */ cvt.s.w $f0, $f4 -/* 03ECCC 8003E0CC 4602003C */ c.lt.s $f0, $f2 -/* 03ECD0 8003E0D0 00000000 */ nop -/* 03ECD4 8003E0D4 45000003 */ bc1f .L8003E0E4 -/* 03ECD8 8003E0D8 00000000 */ nop -/* 03ECDC 8003E0DC 46001006 */ mov.s $f0, $f2 -/* 03ECE0 8003E0E0 00000000 */ nop -.L8003E0E4: -/* 03ECE4 8003E0E4 46060003 */ div.s $f0, $f0, $f6 -/* 03ECE8 8003E0E8 8C990040 */ lw $t9, 0x40($a0) -/* 03ECEC 8003E0EC 8C820064 */ lw $v0, 0x64($a0) -/* 03ECF0 8003E0F0 C728000C */ lwc1 $f8, 0xc($t9) -/* 03ECF4 8003E0F4 00000000 */ nop -/* 03ECF8 8003E0F8 46004282 */ mul.s $f10, $f8, $f0 -/* 03ECFC 8003E0FC E48A0008 */ swc1 $f10, 8($a0) -/* 03ED00 8003E100 C4900008 */ lwc1 $f16, 8($a0) -/* 03ED04 8003E104 A4400004 */ sh $zero, 4($v0) -/* 03ED08 8003E108 E4500000 */ swc1 $f16, ($v0) -/* 03ED0C 8003E10C AC80007C */ sw $zero, 0x7c($a0) -/* 03ED10 8003E110 0C0270C3 */ jal get_filtered_cheats -/* 03ED14 8003E114 AFA40018 */ sw $a0, 0x18($sp) -/* 03ED18 8003E118 8FA40018 */ lw $a0, 0x18($sp) -/* 03ED1C 8003E11C 30480800 */ andi $t0, $v0, 0x800 -/* 03ED20 8003E120 11000004 */ beqz $t0, .L8003E134 -/* 03ED24 8003E124 8FBF0014 */ lw $ra, 0x14($sp) -/* 03ED28 8003E128 0C003FEE */ jal gParticlePtrList_addObject -/* 03ED2C 8003E12C 00000000 */ nop -/* 03ED30 8003E130 8FBF0014 */ lw $ra, 0x14($sp) -.L8003E134: -/* 03ED34 8003E134 27BD0018 */ addiu $sp, $sp, 0x18 -/* 03ED38 8003E138 03E00008 */ jr $ra -/* 03ED3C 8003E13C 00000000 */ nop - diff --git a/src/unknown_0348C0.c b/src/unknown_0348C0.c index 858b02a0..ec03bea1 100644 --- a/src/unknown_0348C0.c +++ b/src/unknown_0348C0.c @@ -1168,59 +1168,66 @@ void obj_loop_world_key(Object *worldKeyObj, s32 speed) { worldKeyObj->y_rotation += speed * 256; } -#ifdef NON_MATCHING -typedef struct unknown_struct_8003DFCC { - u8 pad0[8]; +typedef struct Object_64_8003DFCC { + f32 unk0; + s16 unk4; + char unk6[0x2]; u8 unk8; u8 unk9; u8 unkA; -} unknown_struct_8003DFCC; +} Object_64_8003DFCC; -void func_8003DFCC(Object *arg0, unknown_struct_8003DFCC *arg1) { - f32 temp_f0; - s32 temp_v0; - Object_64 *temp_v0_2; - f32 phi_f0; +void func_8003DFCC(Object *arg0, Object_64_8003DFCC *arg1) { + s32 cheats; + Object_64_8003DFCC *obj; + f32 temp; arg0->unk4C->unk14 = 2; arg0->unk4C->unk11 = 4; arg0->unk4C->unk10 = 0x14; - temp_v0 = get_filtered_cheats(); - if (temp_v0 & CHEAT_ALL_BALLOONS_ARE_BLUE) { - arg1->unk9 = 0U; - } else if (temp_v0 & CHEAT_ALL_BALLOONS_ARE_RED) { - arg1->unk9 = 1U; - } else if (temp_v0 & CHEAT_ALL_BALLOONS_ARE_GREEN) { - arg1->unk9 = 2U; - } else if (temp_v0 & CHEAT_ALL_BALLOONS_ARE_YELLOW) { - arg1->unk9 = 3U; - } else if (temp_v0 & CHEAT_ALL_BALLOONS_ARE_RAINBOW) { - arg1->unk9 = 4U; + + cheats = get_filtered_cheats(); + + if (cheats & CHEAT_ALL_BALLOONS_ARE_BLUE) { + arg1->unk9 = 0; + } else if (cheats & CHEAT_ALL_BALLOONS_ARE_RED) { + arg1->unk9 = 1; + } else if (cheats & CHEAT_ALL_BALLOONS_ARE_GREEN) { + arg1->unk9 = 2; + } else if (cheats & CHEAT_ALL_BALLOONS_ARE_YELLOW) { + arg1->unk9 = 3; + } else if (cheats & CHEAT_ALL_BALLOONS_ARE_RAINBOW) { + arg1->unk9 = 4; } - if ((s32) arg1->unk8 >= 6) { - arg1->unk8 = 0U; + + if (arg1->unk8 >= 6) { + arg1->unk8 = 0; } - if ((s32) arg0->unk3A >= (s32) arg0->descriptor_ptr->unk55) { + + if (arg0->unk3A >= arg0->descriptor_ptr->unk55) { arg0->unk3A = 0; } - arg0->unk3A = (s8) arg1->unk9; - arg0->unk78 = (s32) arg0->unk3A; - phi_f0 = arg1->unkA; - if (arg1->unkA < 10.0f) { - phi_f0 = 10.0f; + + arg0->unk3A = arg1->unk9; + arg0->unk78 = arg0->unk3A; + + temp = arg1->unkA & 0xFF; + if (temp < 10) { + temp = 10; } - temp_f0 = phi_f0 / 64.0f; - arg0->scale = (f32) (arg0->descriptor_ptr->unkC * temp_f0); - arg0->unk64->unk4 = 0; - arg0->unk64->unk0_a.unk0 = arg0->scale; + temp /= 64; + + obj = (Object_64_8003DFCC*)arg0->unk64; + + arg0->scale = arg0->descriptor_ptr->unkC * temp; + obj->unk0 = arg0->scale; + obj->unk4 = 0; arg0->unk7C.word = 0; + if (get_filtered_cheats() & CHEAT_DISABLE_WEAPONS) { gParticlePtrList_addObject(arg0); } } -#else -GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003DFCC.s") -#endif GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003E140.s")