diff --git a/src/game/data/data_003dc0.c b/src/game/data/data_003dc0.c index cb252e477..dcaa8498d 100644 --- a/src/game/data/data_003dc0.c +++ b/src/game/data/data_003dc0.c @@ -654,10 +654,7 @@ u32 var8005ee68 = 0x00000000; u32 var8005ee6c[4] = {0}; u32 var8005ee7c[4] = {0}; u32 var8005ee8c[4] = {0}; -u32 var8005ee9c = 0x00000000; -u32 var8005eea0 = 0x00000000; -u32 var8005eea4 = 0x00000000; -u32 var8005eea8 = 0x00000000; +u32 var8005ee9c[4] = {0}; u8 var8005eeac = 0; u32 var8005eeb0 = 0x00000000; u32 var8005eeb4 = 0x00000000; diff --git a/src/include/game/data/data_000000.h b/src/include/game/data/data_000000.h index 599774ded..1f379c895 100644 --- a/src/include/game/data/data_000000.h +++ b/src/include/game/data/data_000000.h @@ -118,7 +118,7 @@ extern u32 var8005ee68; extern u32 var8005ee6c[4]; extern u32 var8005ee7c[4]; extern u32 var8005ee8c[4]; -extern u32 var8005ee9c; +extern u32 var8005ee9c[4]; extern u8 var8005eeac; extern u32 var8005eeb8; extern u32 var8005eebc; diff --git a/src/include/types.h b/src/include/types.h index 15f6289f1..c30594438 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -7096,8 +7096,7 @@ struct contdata { s32 unk1e4; s32 unk1e8; s32 unk1ec; - s32 unk1f0; - s32 unk1f4; + u16 unk1f0[4]; s32 unk1f8; s32 unk1fc; s32 unk200; diff --git a/src/lib/lib_13900.c b/src/lib/lib_13900.c index 450584a70..39fc81d8b 100644 --- a/src/lib/lib_13900.c +++ b/src/lib/lib_13900.c @@ -1716,52 +1716,19 @@ u16 contGetButtons(s8 contpadnum, u16 mask) return var8005ee60->samples[var8005ee60->index].pads[contpadnum].button & mask; } -GLOBAL_ASM( -glabel func00015020 -/* 15020: 3c038006 */ lui $v1,%hi(var8005ee60) -/* 15024: 8c63ee60 */ lw $v1,%lo(var8005ee60)($v1) -/* 15028: afa40000 */ sw $a0,0x0($sp) -/* 1502c: afa50004 */ sw $a1,0x4($sp) -/* 15030: 8c790200 */ lw $t9,0x200($v1) -/* 15034: 00047600 */ sll $t6,$a0,0x18 -/* 15038: 000e7e03 */ sra $t7,$t6,0x18 -/* 1503c: 30b8ffff */ andi $t8,$a1,0xffff -/* 15040: 03002825 */ or $a1,$t8,$zero -/* 15044: 0721000f */ bgez $t9,.L00015084 -/* 15048: 01e02025 */ or $a0,$t7,$zero -/* 1504c: 3c088006 */ lui $t0,%hi(var8005eeac) -/* 15050: 9108eeac */ lbu $t0,%lo(var8005eeac)($t0) -/* 15054: 3c0c8006 */ lui $t4,%hi(var8005ee9c) -/* 15058: 258cee9c */ addiu $t4,$t4,%lo(var8005ee9c) -/* 1505c: 01e84807 */ srav $t1,$t0,$t7 -/* 15060: 312a0001 */ andi $t2,$t1,0x1 -/* 15064: 15400007 */ bnez $t2,.L00015084 -/* 15068: 000f5880 */ sll $t3,$t7,0x2 -/* 1506c: 016c1821 */ addu $v1,$t3,$t4 -/* 15070: 8c6d0000 */ lw $t5,0x0($v1) -/* 15074: 00001025 */ or $v0,$zero,$zero -/* 15078: 25ae0001 */ addiu $t6,$t5,0x1 -/* 1507c: 03e00008 */ jr $ra -/* 15080: ac6e0000 */ sw $t6,0x0($v1) -.L00015084: -/* 15084: 00047880 */ sll $t7,$a0,0x2 -/* 15088: 3c18800a */ lui $t8,%hi(var80099e68) -/* 1508c: 030fc021 */ addu $t8,$t8,$t7 -/* 15090: 8f189e68 */ lw $t8,%lo(var80099e68)($t8) -/* 15094: 5b000004 */ blezl $t8,.L000150a8 -/* 15098: 0004c840 */ sll $t9,$a0,0x1 -/* 1509c: 03e00008 */ jr $ra -/* 150a0: 00001025 */ or $v0,$zero,$zero -/* 150a4: 0004c840 */ sll $t9,$a0,0x1 -.L000150a8: -/* 150a8: 00794021 */ addu $t0,$v1,$t9 -/* 150ac: 950901f0 */ lhu $t1,0x1f0($t0) -/* 150b0: 01251024 */ and $v0,$t1,$a1 -/* 150b4: 304affff */ andi $t2,$v0,0xffff -/* 150b8: 01401025 */ or $v0,$t2,$zero -/* 150bc: 03e00008 */ jr $ra -/* 150c0: 00000000 */ nop -); +u16 func00015020(s8 contpadnum, u16 mask) +{ + if (var8005ee60->unk200 < 0 && (var8005eeac >> contpadnum & 1) == 0) { + var8005ee9c[contpadnum]++; + return 0; + } + + if (var80099e68[contpadnum] > 0) { + return 0; + } + + return var8005ee60->unk1f0[contpadnum] & mask; +} GLOBAL_ASM( glabel func000150c4