From 6010c607a169014cceb6a8bf6154f28407cd9352 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 30 Oct 2020 17:49:18 +1000 Subject: [PATCH] Decompile contGetStickX --- src/game/bondeyespy.c | 4 +- src/game/bondmove.c | 8 +- src/game/data/data_003dc0.c | 9 +- src/game/game_0b63b0.c | 8 +- src/game/game_0f09f0.c | 2 +- src/game/game_141820.c | 2 +- src/game/game_167ae0.c | 32 +++---- src/gvars/gvars.c | 135 +--------------------------- src/include/game/data/data_000000.h | 5 +- src/include/gvars/gvars.h | 4 +- src/include/lib/lib_13900.h | 2 +- src/include/types.h | 17 ++++ src/lib/lib_13900.c | 68 ++++---------- 13 files changed, 73 insertions(+), 223 deletions(-) diff --git a/src/game/bondeyespy.c b/src/game/bondeyespy.c index 79ae249ba..bb0b50740 100644 --- a/src/game/bondeyespy.c +++ b/src/game/bondeyespy.c @@ -1735,7 +1735,7 @@ glabel var7f1adb00 /* f0d0968: 00022600 */ sll $a0,$v0,0x18 /* f0d096c: 00047e03 */ sra $t7,$a0,0x18 /* f0d0970: a3a200c3 */ sb $v0,0xc3($sp) -/* f0d0974: 0c005384 */ jal func00014e10 +/* f0d0974: 0c005384 */ jal contGetStickX /* f0d0978: 01e02025 */ or $a0,$t7,$zero /* f0d097c: 83a400c3 */ lb $a0,0xc3($sp) /* f0d0980: 0c0053ae */ jal func00014eb8 @@ -1798,7 +1798,7 @@ glabel var7f1adb00 /* f0d0a5c: 000f2600 */ sll $a0,$t7,0x18 /* f0d0a60: 0004c603 */ sra $t8,$a0,0x18 /* f0d0a64: afaf0074 */ sw $t7,0x74($sp) -/* f0d0a68: 0c005384 */ jal func00014e10 +/* f0d0a68: 0c005384 */ jal contGetStickX /* f0d0a6c: 03002025 */ or $a0,$t8,$zero /* f0d0a70: 83a40077 */ lb $a0,0x77($sp) /* f0d0a74: a3a200c1 */ sb $v0,0xc1($sp) diff --git a/src/game/bondmove.c b/src/game/bondmove.c index b9929fc50..927271cea 100644 --- a/src/game/bondmove.c +++ b/src/game/bondmove.c @@ -841,7 +841,7 @@ glabel var7f1ad8e4 /* f0c8c14: 0300a825 */ or $s5,$t8,$zero /* f0c8c18: 00182600 */ sll $a0,$t8,0x18 /* f0c8c1c: 0004ce03 */ sra $t9,$a0,0x18 -/* f0c8c20: 0c005384 */ jal func00014e10 +/* f0c8c20: 0c005384 */ jal contGetStickX /* f0c8c24: 03202025 */ or $a0,$t9,$zero /* f0c8c28: 0002a600 */ sll $s4,$v0,0x18 /* f0c8c2c: 00144603 */ sra $t0,$s4,0x18 @@ -1072,7 +1072,7 @@ glabel var7f1ad8e4 /* f0c8f4c: 00147603 */ sra $t6,$s4,0x18 /* f0c8f50: 00047e03 */ sra $t7,$a0,0x18 /* f0c8f54: 01c0a025 */ or $s4,$t6,$zero -/* f0c8f58: 0c005384 */ jal func00014e10 +/* f0c8f58: 0c005384 */ jal contGetStickX /* f0c8f5c: 01e02025 */ or $a0,$t7,$zero /* f0c8f60: 00142600 */ sll $a0,$s4,0x18 /* f0c8f64: 0004c603 */ sra $t8,$a0,0x18 @@ -3997,7 +3997,7 @@ glabel var7f1ad8e4 // contpad1 = optionsGetContpadNum1(g_Vars.currentplayerstats->mpindex); // // // 8c10 -// c1stickx = arg0 ? func00014e10(contpad1) : 0; +// c1stickx = arg0 ? contGetStickX(contpad1) : 0; // // // 8c3c // c1sticky = arg1 ? func00014eb8(contpad1) : 0; @@ -4089,7 +4089,7 @@ glabel var7f1ad8e4 // // 8f38 // contpad2 = optionsGetContpadNum2(g_Vars.currentplayerstats->mpindex); // shifted to s8 and stored in s4 // // s4 shifted to s8 and stored in a0 for next jal -// c2stickx = func00014e10(contpad2); // sb v0,0xe9(sp) +// c2stickx = contGetStickX(contpad2); // sb v0,0xe9(sp) // // s4 shifted to s8 and stored in a0 for next jal // c2sticky = func00014eb8(contpad2); // shifted to s8 and stored in s0 // // s4 shifted to s8 and stored in a0 for next jal diff --git a/src/game/data/data_003dc0.c b/src/game/data/data_003dc0.c index da3a7d91e..1c56650f6 100644 --- a/src/game/data/data_003dc0.c +++ b/src/game/data/data_003dc0.c @@ -648,13 +648,10 @@ u32 var8005ee50 = 0x00000000; u32 var8005ee54 = 0x00000000; u32 var8005ee58 = 0x00000000; u32 var8005ee5c = 0x00000000; -u32 var8005ee60 = (u32) &var80099a60; +struct contdata *var8005ee60 = &var80099a60; u32 var8005ee64 = 0x00000000; u32 var8005ee68 = 0x00000000; -u32 var8005ee6c = 0x00000000; -u32 var8005ee70 = 0x00000000; -u32 var8005ee74 = 0x00000000; -u32 var8005ee78 = 0x00000000; +u32 var8005ee6c[4] = {0}; u32 var8005ee7c = 0x00000000; u32 var8005ee80 = 0x00000000; u32 var8005ee84 = 0x00000000; @@ -667,7 +664,7 @@ u32 var8005ee9c = 0x00000000; u32 var8005eea0 = 0x00000000; u32 var8005eea4 = 0x00000000; u32 var8005eea8 = 0x00000000; -u32 var8005eeac = 0x00000000; +u8 var8005eeac = 0; u32 var8005eeb0 = 0x00000000; u32 var8005eeb4 = 0x00000000; u32 var8005eeb8 = 0x00000001; diff --git a/src/game/game_0b63b0.c b/src/game/game_0b63b0.c index f861106c9..bab463a0d 100644 --- a/src/game/game_0b63b0.c +++ b/src/game/game_0b63b0.c @@ -8918,7 +8918,7 @@ glabel var7f1ad6ac .L0f0be600: /* f0be600: 00122600 */ sll $a0,$s2,0x18 /* f0be604: 00045e03 */ sra $t3,$a0,0x18 -/* f0be608: 0c005384 */ jal func00014e10 +/* f0be608: 0c005384 */ jal contGetStickX /* f0be60c: 01602025 */ or $a0,$t3,$zero /* f0be610: 00122600 */ sll $a0,$s2,0x18 /* f0be614: 00046e03 */ sra $t5,$a0,0x18 @@ -8998,7 +8998,7 @@ glabel var7f1ad6ac .L0f0be720: /* f0be720: 00122600 */ sll $a0,$s2,0x18 /* f0be724: 00045603 */ sra $t2,$a0,0x18 -/* f0be728: 0c005384 */ jal func00014e10 +/* f0be728: 0c005384 */ jal contGetStickX /* f0be72c: 01402025 */ or $a0,$t2,$zero /* f0be730: 00122600 */ sll $a0,$s2,0x18 /* f0be734: 00045e03 */ sra $t3,$a0,0x18 @@ -10735,7 +10735,7 @@ glabel var7f1ad6ac // } // } // -// cStack243 = func00014e10(contpad1); +// cStack243 = contGetStickX(contpad1); // cStack244 = func00014eb8(contpad1); // } else { // slow = true; @@ -10764,7 +10764,7 @@ glabel var7f1ad6ac // } // } // -// cStack243 = func00014e10(contpad1); +// cStack243 = contGetStickX(contpad1); // cStack244 = func00014eb8(contpad1); // } else { // slow = true; diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index acd0dc32a..9993716c3 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -10995,7 +10995,7 @@ glabel var7f1b2ac8 /* f0fa924: afab00f0 */ sw $t3,0xf0($sp) /* f0fa928: afaa00f4 */ sw $t2,0xf4($sp) /* f0fa92c: afa90128 */ sw $t1,0x128($sp) -/* f0fa930: 0c005384 */ jal func00014e10 +/* f0fa930: 0c005384 */ jal contGetStickX /* f0fa934: afa80124 */ sw $t0,0x124($sp) /* f0fa938: 00028600 */ sll $s0,$v0,0x18 /* f0fa93c: 0010c603 */ sra $t8,$s0,0x18 diff --git a/src/game/game_141820.c b/src/game/game_141820.c index 199175eeb..c96b20d72 100644 --- a/src/game/game_141820.c +++ b/src/game/game_141820.c @@ -3993,7 +3993,7 @@ glabel hudRenderEyespyUi /* f1451d8: 00102600 */ sll $a0,$s0,0x18 /* f1451dc: 0004ce03 */ sra $t9,$a0,0x18 /* f1451e0: 3052ffff */ andi $s2,$v0,0xffff -/* f1451e4: 0c005384 */ jal func00014e10 +/* f1451e4: 0c005384 */ jal contGetStickX /* f1451e8: 03202025 */ or $a0,$t9,$zero /* f1451ec: 00102600 */ sll $a0,$s0,0x18 /* f1451f0: 00047603 */ sra $t6,$a0,0x18 diff --git a/src/game/game_167ae0.c b/src/game/game_167ae0.c index 3c5191b2d..932653d3f 100644 --- a/src/game/game_167ae0.c +++ b/src/game/game_167ae0.c @@ -4205,23 +4205,23 @@ void func0f16b96c(void) func0f0df364(); if ((func00015020(0, 0xffff) != 0 - || func00014e10(0) > 10 - || func00014e10(0) < -10 + || contGetStickX(0) > 10 + || contGetStickX(0) < -10 || func00014eb8(0) > 10 || func00014eb8(0) < -10 || func00015020(1, 0xffff) != 0 - || func00014e10(1) > 10 - || func00014e10(1) < -10 + || contGetStickX(1) > 10 + || contGetStickX(1) < -10 || func00014eb8(1) > 10 || func00014eb8(1) < -10 || func00015020(2, 0xffff) != 0 - || func00014e10(2) > 10 - || func00014e10(2) < -10 + || contGetStickX(2) > 10 + || contGetStickX(2) < -10 || func00014eb8(2) > 10 || func00014eb8(2) < -10 || func00015020(3, 0xffff) != 0 - || func00014e10(3) > 10 - || func00014e10(3) < -10 + || contGetStickX(3) > 10 + || contGetStickX(3) < -10 || func00014eb8(3) > 10 || func00014eb8(3) < -10) && var800624a4) { if (g_Vars.stagenum != STAGE_TITLE) { @@ -4234,23 +4234,23 @@ void func0f16b96c(void) if (g_Vars.stagenum < STAGE_TITLE && !var800624a4 && !g_Vars.in_cutscene) { if (func00014f60(0, 0xffff) == 0 - && func00014e10(0) < 10 - && func00014e10(0) > -10 + && contGetStickX(0) < 10 + && contGetStickX(0) > -10 && func00014eb8(0) < 10 && func00014eb8(0) > -10 && func00014f60(1, 0xffff) == 0 - && func00014e10(1) < 10 - && func00014e10(1) > -10 + && contGetStickX(1) < 10 + && contGetStickX(1) > -10 && func00014eb8(1) < 10 && func00014eb8(1) > -10 && func00014f60(2, 0xffff) == 0 - && func00014e10(2) < 10 - && func00014e10(2) > -10 + && contGetStickX(2) < 10 + && contGetStickX(2) > -10 && func00014eb8(2) < 10 && func00014eb8(2) > -10 && func00014f60(3, 0xffff) == 0 - && func00014e10(3) < 10 - && func00014e10(3) > -10 + && contGetStickX(3) < 10 + && contGetStickX(3) > -10 && func00014eb8(3) < 10 && func00014eb8(3) > -10) { var800624b0 += g_Vars.diffframe60; diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 2232398cf..afbc0a7a7 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -12162,135 +12162,7 @@ u32 var80099a3c = 0; OSMesgQueue var80099a40 = {0}; u32 var80099a58 = 0; u32 var80099a5c = 0; -u32 var80099a60 = 0; -u32 var80099a64 = 0; -u32 var80099a68 = 0; -u32 var80099a6c = 0; -u32 var80099a70 = 0; -u32 var80099a74 = 0; -u32 var80099a78 = 0; -u32 var80099a7c = 0; -u32 var80099a80 = 0; -u32 var80099a84 = 0; -u32 var80099a88 = 0; -u32 var80099a8c = 0; -u32 var80099a90 = 0; -u32 var80099a94 = 0; -u32 var80099a98 = 0; -u32 var80099a9c = 0; -u32 var80099aa0 = 0; -u32 var80099aa4 = 0; -u32 var80099aa8 = 0; -u32 var80099aac = 0; -u32 var80099ab0 = 0; -u32 var80099ab4 = 0; -u32 var80099ab8 = 0; -u32 var80099abc = 0; -u32 var80099ac0 = 0; -u32 var80099ac4 = 0; -u32 var80099ac8 = 0; -u32 var80099acc = 0; -u32 var80099ad0 = 0; -u32 var80099ad4 = 0; -u32 var80099ad8 = 0; -u32 var80099adc = 0; -u32 var80099ae0 = 0; -u32 var80099ae4 = 0; -u32 var80099ae8 = 0; -u32 var80099aec = 0; -u32 var80099af0 = 0; -u32 var80099af4 = 0; -u32 var80099af8 = 0; -u32 var80099afc = 0; -u32 var80099b00 = 0; -u32 var80099b04 = 0; -u32 var80099b08 = 0; -u32 var80099b0c = 0; -u32 var80099b10 = 0; -u32 var80099b14 = 0; -u32 var80099b18 = 0; -u32 var80099b1c = 0; -u32 var80099b20 = 0; -u32 var80099b24 = 0; -u32 var80099b28 = 0; -u32 var80099b2c = 0; -u32 var80099b30 = 0; -u32 var80099b34 = 0; -u32 var80099b38 = 0; -u32 var80099b3c = 0; -u32 var80099b40 = 0; -u32 var80099b44 = 0; -u32 var80099b48 = 0; -u32 var80099b4c = 0; -u32 var80099b50 = 0; -u32 var80099b54 = 0; -u32 var80099b58 = 0; -u32 var80099b5c = 0; -u32 var80099b60 = 0; -u32 var80099b64 = 0; -u32 var80099b68 = 0; -u32 var80099b6c = 0; -u32 var80099b70 = 0; -u32 var80099b74 = 0; -u32 var80099b78 = 0; -u32 var80099b7c = 0; -u32 var80099b80 = 0; -u32 var80099b84 = 0; -u32 var80099b88 = 0; -u32 var80099b8c = 0; -u32 var80099b90 = 0; -u32 var80099b94 = 0; -u32 var80099b98 = 0; -u32 var80099b9c = 0; -u32 var80099ba0 = 0; -u32 var80099ba4 = 0; -u32 var80099ba8 = 0; -u32 var80099bac = 0; -u32 var80099bb0 = 0; -u32 var80099bb4 = 0; -u32 var80099bb8 = 0; -u32 var80099bbc = 0; -u32 var80099bc0 = 0; -u32 var80099bc4 = 0; -u32 var80099bc8 = 0; -u32 var80099bcc = 0; -u32 var80099bd0 = 0; -u32 var80099bd4 = 0; -u32 var80099bd8 = 0; -u32 var80099bdc = 0; -u32 var80099be0 = 0; -u32 var80099be4 = 0; -u32 var80099be8 = 0; -u32 var80099bec = 0; -u32 var80099bf0 = 0; -u32 var80099bf4 = 0; -u32 var80099bf8 = 0; -u32 var80099bfc = 0; -u32 var80099c00 = 0; -u32 var80099c04 = 0; -u32 var80099c08 = 0; -u32 var80099c0c = 0; -u32 var80099c10 = 0; -u32 var80099c14 = 0; -u32 var80099c18 = 0; -u32 var80099c1c = 0; -u32 var80099c20 = 0; -u32 var80099c24 = 0; -u32 var80099c28 = 0; -u32 var80099c2c = 0; -u32 var80099c30 = 0; -u32 var80099c34 = 0; -u32 var80099c38 = 0; -u32 var80099c3c = 0; -u32 var80099c40 = 0; -u32 var80099c44 = 0; -u32 var80099c48 = 0; -u32 var80099c4c = 0; -u32 var80099c50 = 0; -u32 var80099c54 = 0; -u32 var80099c58 = 0; -u32 var80099c5c = 0; -u32 var80099c60 = 0; +struct contdata var80099a60 = {0}; u32 var80099c64 = 0; u32 var80099c68 = 0; u32 var80099c6c = 0; @@ -12420,10 +12292,7 @@ u32 var80099e58 = 0; u32 var80099e5c = 0; u32 var80099e60 = 0; u32 var80099e64 = 0; -u32 var80099e68 = 0; -u32 var80099e6c = 0; -u32 var80099e70 = 0; -u32 var80099e74 = 0; +s32 var80099e68[4] = {0}; OSMesgQueue var80099e78 = {0}; u32 var80099e90 = 0; u32 var80099e94 = 0; diff --git a/src/include/game/data/data_000000.h b/src/include/game/data/data_000000.h index 62827aa5f..4e7903d28 100644 --- a/src/include/game/data/data_000000.h +++ b/src/include/game/data/data_000000.h @@ -113,12 +113,13 @@ extern u32 var8005edf0; extern u32 var8005ee10; extern u32 var8005ee14; extern u32 var8005ee18; +extern struct contdata *var8005ee60; extern u32 var8005ee68; -extern u32 var8005ee6c; +extern u32 var8005ee6c[4]; extern u32 var8005ee7c; extern u32 var8005ee8c; extern u32 var8005ee9c; -extern u32 var8005eeac; +extern u8 var8005eeac; extern u32 var8005eeb8; extern u32 var8005eebc; extern u32 var8005eecc; diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 9cd4cc5a7..3b188fa3c 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -461,9 +461,9 @@ extern u32 var80099900; extern u32 var80099a00; extern OSMesg var80099a20; extern OSMesgQueue var80099a40; -extern u32 var80099a60; +extern struct contdata var80099a60; extern u32 var80099c64; -extern u32 var80099e68; +extern s32 var80099e68[4]; extern OSMesgQueue var80099e78; extern u32 var80099e90; extern u32 var80099eb8; diff --git a/src/include/lib/lib_13900.h b/src/include/lib/lib_13900.h index 7ff0178a6..7c818e742 100644 --- a/src/include/lib/lib_13900.h +++ b/src/include/lib/lib_13900.h @@ -32,7 +32,7 @@ s32 func000149c0(u32 samplenum, s8 contpadnum); u32 func00014a78(u32 samplenum, s8 contpadnum, u32 buttons); u32 func00014b50(u32 samplenum, s8 contpadnum, u32 buttons); u32 func00014c98(u32 *arg0, s8 contpadnum, u32 buttons); -s8 func00014e10(s8 contpadnum); +s8 contGetStickX(s8 contpadnum); s8 func00014eb8(s8 contpadnum); u16 func00014f60(s8 contpadnum, u16 arg1); u16 func00015020(s8 contpadnum, u16 arg1); diff --git a/src/include/types.h b/src/include/types.h index 6de283e61..15f6289f1 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -7086,4 +7086,21 @@ struct stageallocation { char *string; }; +struct contsample { + OSContPad pads[4]; +}; + +struct contdata { + struct contsample samples[20]; + s32 index; + s32 unk1e4; + s32 unk1e8; + s32 unk1ec; + s32 unk1f0; + s32 unk1f4; + s32 unk1f8; + s32 unk1fc; + s32 unk200; +}; + #endif diff --git a/src/lib/lib_13900.c b/src/lib/lib_13900.c index 98e3506b7..c6a88294a 100644 --- a/src/lib/lib_13900.c +++ b/src/lib/lib_13900.c @@ -1002,8 +1002,8 @@ glabel func00014484 /* 144c8: 3c018006 */ lui $at,%hi(var8005ee64) /* 144cc: 0c005102 */ jal func00014408 /* 144d0: ac20ee64 */ sw $zero,%lo(var8005ee64)($at) -/* 144d4: 3c0f800a */ lui $t7,%hi(var80099c48) -/* 144d8: 8def9c48 */ lw $t7,%lo(var80099c48)($t7) +/* 144d4: 3c0f800a */ lui $t7,%hi(var80099a60+0x1e8) +/* 144d8: 8def9c48 */ lw $t7,%lo(var80099a60+0x1e8)($t7) /* 144dc: 3c19800a */ lui $t9,%hi(var80099a60) /* 144e0: 27399a60 */ addiu $t9,$t9,%lo(var80099a60) /* 144e4: 000fc080 */ sll $t8,$t7,0x2 @@ -1118,8 +1118,8 @@ glabel func00014484 /* 14670: 3c018006 */ lui $at,%hi(var8005ee64) /* 14674: 0c005102 */ jal func00014408 /* 14678: ac20ee64 */ sw $zero,%lo(var8005ee64)($at) -/* 1467c: 3c09800a */ lui $t1,%hi(var80099c48) -/* 14680: 8d299c48 */ lw $t1,%lo(var80099c48)($t1) +/* 1467c: 3c09800a */ lui $t1,%hi(var80099a60+0x1e8) +/* 14680: 8d299c48 */ lw $t1,%lo(var80099a60+0x1e8)($t1) /* 14684: 3c0b800a */ lui $t3,%hi(var80099a60) /* 14688: 256b9a60 */ addiu $t3,$t3,%lo(var80099a60) /* 1468c: 00095080 */ sll $t2,$t1,0x2 @@ -1674,53 +1674,19 @@ glabel func00014c98 /* 14e0c: 27bd0010 */ addiu $sp,$sp,0x10 ); -GLOBAL_ASM( -glabel func00014e10 -/* 14e10: 3c038006 */ lui $v1,%hi(var8005ee60) -/* 14e14: 8c63ee60 */ lw $v1,%lo(var8005ee60)($v1) -/* 14e18: afa40000 */ sw $a0,0x0($sp) -/* 14e1c: 00047600 */ sll $t6,$a0,0x18 -/* 14e20: 8c780200 */ lw $t8,0x200($v1) -/* 14e24: 000e7e03 */ sra $t7,$t6,0x18 -/* 14e28: 01e02025 */ or $a0,$t7,$zero -/* 14e2c: 0701000e */ bgez $t8,.L00014e68 -/* 14e30: 3c198006 */ lui $t9,%hi(var8005eeac) -/* 14e34: 9339eeac */ lbu $t9,%lo(var8005eeac)($t9) -/* 14e38: 3c0b8006 */ lui $t3,%hi(var8005ee6c) -/* 14e3c: 256bee6c */ addiu $t3,$t3,%lo(var8005ee6c) -/* 14e40: 01f94007 */ srav $t0,$t9,$t7 -/* 14e44: 31090001 */ andi $t1,$t0,0x1 -/* 14e48: 15200007 */ bnez $t1,.L00014e68 -/* 14e4c: 000f5080 */ sll $t2,$t7,0x2 -/* 14e50: 014b1821 */ addu $v1,$t2,$t3 -/* 14e54: 8c6c0000 */ lw $t4,0x0($v1) -/* 14e58: 00001025 */ or $v0,$zero,$zero -/* 14e5c: 258d0001 */ addiu $t5,$t4,0x1 -/* 14e60: 03e00008 */ jr $ra -/* 14e64: ac6d0000 */ sw $t5,0x0($v1) -.L00014e68: -/* 14e68: 00047080 */ sll $t6,$a0,0x2 -/* 14e6c: 3c0f800a */ lui $t7,%hi(var80099e68) -/* 14e70: 01ee7821 */ addu $t7,$t7,$t6 -/* 14e74: 8def9e68 */ lw $t7,%lo(var80099e68)($t7) -/* 14e78: 59e00004 */ blezl $t7,.L00014e8c -/* 14e7c: 8c7801e0 */ lw $t8,0x1e0($v1) -/* 14e80: 03e00008 */ jr $ra -/* 14e84: 00001025 */ or $v0,$zero,$zero -/* 14e88: 8c7801e0 */ lw $t8,0x1e0($v1) -.L00014e8c: -/* 14e8c: 00044880 */ sll $t1,$a0,0x2 -/* 14e90: 01244823 */ subu $t1,$t1,$a0 -/* 14e94: 0018c880 */ sll $t9,$t8,0x2 -/* 14e98: 0338c823 */ subu $t9,$t9,$t8 -/* 14e9c: 0019c8c0 */ sll $t9,$t9,0x3 -/* 14ea0: 00794021 */ addu $t0,$v1,$t9 -/* 14ea4: 00094840 */ sll $t1,$t1,0x1 -/* 14ea8: 01095021 */ addu $t2,$t0,$t1 -/* 14eac: 81420002 */ lb $v0,0x2($t2) -/* 14eb0: 03e00008 */ jr $ra -/* 14eb4: 00000000 */ nop -); +s8 contGetStickX(s8 contpadnum) +{ + if (var8005ee60->unk200 < 0 && (var8005eeac >> contpadnum & 1) == 0) { + var8005ee6c[contpadnum]++; + return 0; + } + + if (var80099e68[contpadnum] > 0) { + return 0; + } + + return var8005ee60->samples[var8005ee60->index].pads[contpadnum].stick_x; +} GLOBAL_ASM( glabel func00014eb8