From 2d1c47927426c5a79325c3e1952e641d7a4dc952 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 31 Dec 2019 00:28:28 +1000 Subject: [PATCH] Decompile menuhandlerSightOnScreen, optionsGetSightOnScreen and optionsSetSightOnScreen --- src/game/game_0d4690.c | 20 +++--- src/game/game_102240.c | 111 +++++++-------------------------- src/game/game_10ccd0.c | 8 +-- src/game/game_152710.c | 50 ++++----------- src/include/constants.h | 1 + src/include/game/game_152710.h | 4 +- 6 files changed, 51 insertions(+), 143 deletions(-) diff --git a/src/game/game_0d4690.c b/src/game/game_0d4690.c index 57c79a9ef..52194fc0e 100644 --- a/src/game/game_0d4690.c +++ b/src/game/game_0d4690.c @@ -6638,7 +6638,7 @@ glabel func0f0da2dc /* f0da400: 8dcea248 */ lw $t6,-0x5db8($t6) /* f0da404: 8dc40070 */ lw $a0,0x70($t6) /* f0da408: afad00b4 */ sw $t5,0xb4($sp) -/* f0da40c: 0fc54a04 */ jal func0f152810 +/* f0da40c: 0fc54a04 */ jal optionsGetSightOnScreen /* f0da410: afa60100 */ sw $a2,0x100($sp) /* f0da414: 8fa60100 */ lw $a2,0x100($sp) /* f0da418: 8fad00b4 */ lw $t5,0xb4($sp) @@ -9346,7 +9346,7 @@ glabel func0f0dca48 /* f0dcb90: 10a00005 */ beqz $a1,.L0f0dcba8 /* f0dcb94: 00000000 */ sll $zero,$zero,0x0 /* f0dcb98: 8d8ca248 */ lw $t4,-0x5db8($t4) -/* f0dcb9c: 0fc54a04 */ jal func0f152810 +/* f0dcb9c: 0fc54a04 */ jal optionsGetSightOnScreen /* f0dcba0: 8d840070 */ lw $a0,0x70($t4) /* f0dcba4: 0002282b */ sltu $a1,$zero,$v0 .L0f0dcba8: @@ -9360,7 +9360,7 @@ glabel func0f0dca48 /* f0dcbc4: 10a00005 */ beqz $a1,.L0f0dcbdc /* f0dcbc8: 00000000 */ sll $zero,$zero,0x0 /* f0dcbcc: 8dcea248 */ lw $t6,-0x5db8($t6) -/* f0dcbd0: 0fc54a04 */ jal func0f152810 +/* f0dcbd0: 0fc54a04 */ jal optionsGetSightOnScreen /* f0dcbd4: 8dc40070 */ lw $a0,0x70($t6) /* f0dcbd8: 0002282b */ sltu $a1,$zero,$v0 .L0f0dcbdc: @@ -9374,7 +9374,7 @@ glabel func0f0dca48 /* f0dcbf8: 10a00005 */ beqz $a1,.L0f0dcc10 /* f0dcbfc: 00000000 */ sll $zero,$zero,0x0 /* f0dcc00: 8f18a248 */ lw $t8,-0x5db8($t8) -/* f0dcc04: 0fc54a04 */ jal func0f152810 +/* f0dcc04: 0fc54a04 */ jal optionsGetSightOnScreen /* f0dcc08: 8f040070 */ lw $a0,0x70($t8) /* f0dcc0c: 0002282b */ sltu $a1,$zero,$v0 .L0f0dcc10: @@ -9388,7 +9388,7 @@ glabel func0f0dca48 /* f0dcc2c: 10a00005 */ beqz $a1,.L0f0dcc44 /* f0dcc30: 00000000 */ sll $zero,$zero,0x0 /* f0dcc34: 8d29a248 */ lw $t1,-0x5db8($t1) -/* f0dcc38: 0fc54a04 */ jal func0f152810 +/* f0dcc38: 0fc54a04 */ jal optionsGetSightOnScreen /* f0dcc3c: 8d240070 */ lw $a0,0x70($t1) /* f0dcc40: 0002282b */ sltu $a1,$zero,$v0 .L0f0dcc44: @@ -9402,7 +9402,7 @@ glabel func0f0dca48 /* f0dcc60: 10a00005 */ beqz $a1,.L0f0dcc78 /* f0dcc64: 00000000 */ sll $zero,$zero,0x0 /* f0dcc68: 8d6ba248 */ lw $t3,-0x5db8($t3) -/* f0dcc6c: 0fc54a04 */ jal func0f152810 +/* f0dcc6c: 0fc54a04 */ jal optionsGetSightOnScreen /* f0dcc70: 8d640070 */ lw $a0,0x70($t3) /* f0dcc74: 0002282b */ sltu $a1,$zero,$v0 .L0f0dcc78: @@ -9416,7 +9416,7 @@ glabel func0f0dca48 /* f0dcc94: 10a00005 */ beqz $a1,.L0f0dccac /* f0dcc98: 00000000 */ sll $zero,$zero,0x0 /* f0dcc9c: 8dada248 */ lw $t5,-0x5db8($t5) -/* f0dcca0: 0fc54a04 */ jal func0f152810 +/* f0dcca0: 0fc54a04 */ jal optionsGetSightOnScreen /* f0dcca4: 8da40070 */ lw $a0,0x70($t5) /* f0dcca8: 0002282b */ sltu $a1,$zero,$v0 .L0f0dccac: @@ -9430,7 +9430,7 @@ glabel func0f0dca48 /* f0dccc8: 10a00005 */ beqz $a1,.L0f0dcce0 /* f0dcccc: 00000000 */ sll $zero,$zero,0x0 /* f0dccd0: 8defa248 */ lw $t7,-0x5db8($t7) -/* f0dccd4: 0fc54a04 */ jal func0f152810 +/* f0dccd4: 0fc54a04 */ jal optionsGetSightOnScreen /* f0dccd8: 8de40070 */ lw $a0,0x70($t7) /* f0dccdc: 0002282b */ sltu $a1,$zero,$v0 .L0f0dcce0: @@ -9442,7 +9442,7 @@ glabel func0f0dca48 /* f0dccf0: 10a00005 */ beqz $a1,.L0f0dcd08 /* f0dccf4: 3c19800a */ lui $t9,0x800a /* f0dccf8: 8f39a248 */ lw $t9,-0x5db8($t9) -/* f0dccfc: 0fc54a04 */ jal func0f152810 +/* f0dccfc: 0fc54a04 */ jal optionsGetSightOnScreen /* f0dcd00: 8f240070 */ lw $a0,0x70($t9) /* f0dcd04: 0002282b */ sltu $a1,$zero,$v0 .L0f0dcd08: @@ -9456,7 +9456,7 @@ glabel func0f0dca48 /* f0dcd20: 5121001b */ beql $t1,$at,.L0f0dcd90 /* f0dcd24: 240d0001 */ addiu $t5,$zero,0x1 /* f0dcd28: 8d4aa248 */ lw $t2,-0x5db8($t2) -/* f0dcd2c: 0fc54a04 */ jal func0f152810 +/* f0dcd2c: 0fc54a04 */ jal optionsGetSightOnScreen /* f0dcd30: 8d440070 */ lw $a0,0x70($t2) /* f0dcd34: 10400015 */ beqz $v0,.L0f0dcd8c /* f0dcd38: 3c0b800a */ lui $t3,0x800a diff --git a/src/game/game_102240.c b/src/game/game_102240.c index 2087d4a6d..bd181649b 100644 --- a/src/game/game_102240.c +++ b/src/game/game_102240.c @@ -1033,7 +1033,7 @@ s32 menuhandlerAlwaysShowTarget(u32 operation, struct menu_item *item, bool *ena switch (operation) { case MENUOP_CHECKDISABLED: - if (func0f152810(optionsindex) == 0) { + if (optionsGetSightOnScreen(optionsindex) == 0) { return true; } break; @@ -1059,7 +1059,7 @@ s32 menuhandlerShowZoomRange(u32 operation, struct menu_item *item, bool *enable switch (operation) { case MENUOP_CHECKDISABLED: - if (func0f152810(optionsindex) == 0) { + if (optionsGetSightOnScreen(optionsindex) == 0) { return true; } break; @@ -1073,50 +1073,6 @@ s32 menuhandlerShowZoomRange(u32 operation, struct menu_item *item, bool *enable return 0; } -//GLOBAL_ASM( -//glabel menuhandlerPaintball -///* f1030ec: 3c02800a */ lui $v0,%hi(g_Vars) -///* f1030f0: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) -///* f1030f4: 8c4e0298 */ lw $t6,0x298($v0) -///* f1030f8: 27bdffe8 */ addiu $sp,$sp,-24 -///* f1030fc: afbf0014 */ sw $ra,0x14($sp) -///* f103100: 05c10004 */ bgez $t6,.L0f103114 -///* f103104: 00803825 */ or $a3,$a0,$zero -///* f103108: 8c4f029c */ lw $t7,0x29c($v0) -///* f10310c: 05e20005 */ bltzl $t7,.L0f103124 -///* f103110: 8ca4000c */ lw $a0,0xc($a1) -//.L0f103114: -///* f103114: 8c580288 */ lw $t8,0x288($v0) -///* f103118: 10000002 */ beqz $zero,.L0f103124 -///* f10311c: 8f040070 */ lw $a0,0x70($t8) -///* f103120: 8ca4000c */ lw $a0,0xc($a1) -//.L0f103124: -///* f103124: 24010006 */ addiu $at,$zero,0x6 -///* f103128: 10e10007 */ beq $a3,$at,.L0f103148 -///* f10312c: 24010008 */ addiu $at,$zero,0x8 -///* f103130: 54e1000d */ bnel $a3,$at,.L0f103168 -///* f103134: 00001025 */ or $v0,$zero,$zero -///* f103138: 0fc54a31 */ jal optionsGetPaintball -///* f10313c: 00000000 */ sll $zero,$zero,0x0 -///* f103140: 1000000a */ beqz $zero,.L0f10316c -///* f103144: 8fbf0014 */ lw $ra,0x14($sp) -//.L0f103148: -///* f103148: 0fc54b18 */ jal optionsSetPaintball -///* f10314c: 8cc50000 */ lw $a1,0x0($a2) -///* f103150: 3c02800a */ lui $v0,%hi(g_Vars) -///* f103154: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) -///* f103158: 8c590458 */ lw $t9,0x458($v0) -///* f10315c: 37280001 */ ori $t0,$t9,0x1 -///* f103160: ac480458 */ sw $t0,0x458($v0) -///* f103164: 00001025 */ or $v0,$zero,$zero -//.L0f103168: -///* f103168: 8fbf0014 */ lw $ra,0x14($sp) -//.L0f10316c: -///* f10316c: 27bd0018 */ addiu $sp,$sp,0x18 -///* f103170: 03e00008 */ jr $ra -///* f103174: 00000000 */ sll $zero,$zero,0x0 -//); - s32 menuhandlerPaintball(u32 operation, struct menu_item *item, bool *enable) { u32 optionsindex; @@ -1138,49 +1094,26 @@ s32 menuhandlerPaintball(u32 operation, struct menu_item *item, bool *enable) return 0; } -GLOBAL_ASM( -glabel menuhandlerSightOnScreen -/* f103178: 3c02800a */ lui $v0,%hi(g_Vars) -/* f10317c: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) -/* f103180: 8c4e0298 */ lw $t6,0x298($v0) -/* f103184: 27bdffe8 */ addiu $sp,$sp,-24 -/* f103188: afbf0014 */ sw $ra,0x14($sp) -/* f10318c: 05c10004 */ bgez $t6,.L0f1031a0 -/* f103190: 00803825 */ or $a3,$a0,$zero -/* f103194: 8c4f029c */ lw $t7,0x29c($v0) -/* f103198: 05e20005 */ bltzl $t7,.L0f1031b0 -/* f10319c: 8ca4000c */ lw $a0,0xc($a1) -.L0f1031a0: -/* f1031a0: 8c580288 */ lw $t8,0x288($v0) -/* f1031a4: 10000002 */ beqz $zero,.L0f1031b0 -/* f1031a8: 8f040070 */ lw $a0,0x70($t8) -/* f1031ac: 8ca4000c */ lw $a0,0xc($a1) -.L0f1031b0: -/* f1031b0: 24010006 */ addiu $at,$zero,0x6 -/* f1031b4: 10e10007 */ beq $a3,$at,.L0f1031d4 -/* f1031b8: 24010008 */ addiu $at,$zero,0x8 -/* f1031bc: 54e1000d */ bnel $a3,$at,.L0f1031f4 -/* f1031c0: 00001025 */ or $v0,$zero,$zero -/* f1031c4: 0fc54a04 */ jal func0f152810 -/* f1031c8: 00000000 */ sll $zero,$zero,0x0 -/* f1031cc: 1000000a */ beqz $zero,.L0f1031f8 -/* f1031d0: 8fbf0014 */ lw $ra,0x14($sp) -.L0f1031d4: -/* f1031d4: 0fc54aaa */ jal func0f152aa8 -/* f1031d8: 8cc50000 */ lw $a1,0x0($a2) -/* f1031dc: 3c02800a */ lui $v0,%hi(g_Vars) -/* f1031e0: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) -/* f1031e4: 8c590458 */ lw $t9,0x458($v0) -/* f1031e8: 37280001 */ ori $t0,$t9,0x1 -/* f1031ec: ac480458 */ sw $t0,0x458($v0) -/* f1031f0: 00001025 */ or $v0,$zero,$zero -.L0f1031f4: -/* f1031f4: 8fbf0014 */ lw $ra,0x14($sp) -.L0f1031f8: -/* f1031f8: 27bd0018 */ addiu $sp,$sp,0x18 -/* f1031fc: 03e00008 */ jr $ra -/* f103200: 00000000 */ sll $zero,$zero,0x0 -); +s32 menuhandlerSightOnScreen(u32 operation, struct menu_item *item, bool *enable) +{ + u32 optionsindex; + + if (g_Vars.coopplayernum >= 0 || g_Vars.antiplayernum >= 0) { + optionsindex = g_Vars.unk000288->optionsindex; + } else { + optionsindex = item->right; + } + + switch (operation) { + case MENUOP_GET: + return optionsGetSightOnScreen(optionsindex); + case MENUOP_SET: + optionsSetSightOnScreen(optionsindex, *enable); + g_Vars.unk000458 |= 1; + } + + return 0; +} GLOBAL_ASM( glabel menuhandlerAutoAim diff --git a/src/game/game_10ccd0.c b/src/game/game_10ccd0.c index ac66b0004..2713e175e 100644 --- a/src/game/game_10ccd0.c +++ b/src/game/game_10ccd0.c @@ -2801,7 +2801,7 @@ glabel func0f10f204 /* f10f2b0: 0fc47961 */ jal func0f11e584 /* f10f2b4: 02002825 */ or $a1,$s0,$zero /* f10f2b8: 8fa40024 */ lw $a0,0x24($sp) -/* f10f2bc: 0fc54aaa */ jal func0f152aa8 +/* f10f2bc: 0fc54aaa */ jal optionsSetSightOnScreen /* f10f2c0: 00402825 */ or $a1,$v0,$zero /* f10f2c4: 24040004 */ addiu $a0,$zero,0x4 /* f10f2c8: 0fc47961 */ jal func0f11e584 @@ -2873,7 +2873,7 @@ glabel func0f10f204 /* f10f3d0: 0fc47961 */ jal func0f11e584 /* f10f3d4: 02002825 */ or $a1,$s0,$zero /* f10f3d8: 8fa40020 */ lw $a0,0x20($sp) -/* f10f3dc: 0fc54aaa */ jal func0f152aa8 +/* f10f3dc: 0fc54aaa */ jal optionsSetSightOnScreen /* f10f3e0: 00402825 */ or $a1,$v0,$zero /* f10f3e4: 24040010 */ addiu $a0,$zero,0x10 /* f10f3e8: 0fc47961 */ jal func0f11e584 @@ -3679,7 +3679,7 @@ glabel func0f10feac /* f10ff6c: 02002825 */ or $a1,$s0,$zero /* f10ff70: 0fc4794c */ jal func0f11e530 /* f10ff74: 00403025 */ or $a2,$v0,$zero -/* f10ff78: 0fc54a04 */ jal func0f152810 +/* f10ff78: 0fc54a04 */ jal optionsGetSightOnScreen /* f10ff7c: 02602025 */ or $a0,$s3,$zero /* f10ff80: 24040003 */ addiu $a0,$zero,0x3 /* f10ff84: 02002825 */ or $a1,$s0,$zero @@ -3751,7 +3751,7 @@ glabel func0f10feac /* f11008c: 02002825 */ or $a1,$s0,$zero /* f110090: 0fc4794c */ jal func0f11e530 /* f110094: 00403025 */ or $a2,$v0,$zero -/* f110098: 0fc54a04 */ jal func0f152810 +/* f110098: 0fc54a04 */ jal optionsGetSightOnScreen /* f11009c: 02202025 */ or $a0,$s1,$zero /* f1100a0: 2404000f */ addiu $a0,$zero,0xf /* f1100a4: 02002825 */ or $a1,$s0,$zero diff --git a/src/game/game_152710.c b/src/game/game_152710.c index a218b0263..e2dfef806 100644 --- a/src/game/game_152710.c +++ b/src/game/game_152710.c @@ -87,18 +87,10 @@ glabel func0f1527ec /* f15280c: 000f102b */ sltu $v0,$zero,$t7 ); -GLOBAL_ASM( -glabel func0f152810 -/* f152810: 00047080 */ sll $t6,$a0,0x2 -/* f152814: 01c47021 */ addu $t6,$t6,$a0 -/* f152818: 000e7140 */ sll $t6,$t6,0x5 -/* f15281c: 3c02800b */ lui $v0,0x800b -/* f152820: 004e1021 */ addu $v0,$v0,$t6 -/* f152824: 9442c800 */ lhu $v0,-0x3800($v0) -/* f152828: 304f0004 */ andi $t7,$v0,0x4 -/* f15282c: 03e00008 */ jr $ra -/* f152830: 000f102b */ sltu $v0,$zero,$t7 -); +s32 optionsGetSightOnScreen(s32 optionsindex) +{ + return (g_Options[optionsindex].unk48 & OPTION_SIGHTONSCREEN) != 0; +} s32 optionsGetAmmoOnScreen(s32 optionsindex) { @@ -221,32 +213,14 @@ glabel func0f152a50 /* f152aa4: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f152aa8 -/* f152aa8: 10a0000b */ beqz $a1,.L0f152ad8 -/* f152aac: 00044080 */ sll $t0,$a0,0x2 -/* f152ab0: 00047080 */ sll $t6,$a0,0x2 -/* f152ab4: 01c47021 */ addu $t6,$t6,$a0 -/* f152ab8: 3c0f800b */ lui $t7,%hi(g_Options) -/* f152abc: 25efc7b8 */ addiu $t7,$t7,%lo(g_Options) -/* f152ac0: 000e7140 */ sll $t6,$t6,0x5 -/* f152ac4: 01cf1021 */ addu $v0,$t6,$t7 -/* f152ac8: 94580048 */ lhu $t8,0x48($v0) -/* f152acc: 37190004 */ ori $t9,$t8,0x4 -/* f152ad0: 03e00008 */ jr $ra -/* f152ad4: a4590048 */ sh $t9,0x48($v0) -.L0f152ad8: -/* f152ad8: 01044021 */ addu $t0,$t0,$a0 -/* f152adc: 3c09800b */ lui $t1,%hi(g_Options) -/* f152ae0: 2529c7b8 */ addiu $t1,$t1,%lo(g_Options) -/* f152ae4: 00084140 */ sll $t0,$t0,0x5 -/* f152ae8: 01091021 */ addu $v0,$t0,$t1 -/* f152aec: 944a0048 */ lhu $t2,0x48($v0) -/* f152af0: 314bfffb */ andi $t3,$t2,0xfffb -/* f152af4: a44b0048 */ sh $t3,0x48($v0) -/* f152af8: 03e00008 */ jr $ra -/* f152afc: 00000000 */ sll $zero,$zero,0x0 -); +void optionsSetSightOnScreen(s32 optionsindex, bool enable) +{ + if (enable) { + g_Options[optionsindex].unk48 |= OPTION_SIGHTONSCREEN; + } else { + g_Options[optionsindex].unk48 &= ~OPTION_SIGHTONSCREEN; + } +} void optionsSetAmmoOnScreen(s32 optionsindex, bool enable) { diff --git a/src/include/constants.h b/src/include/constants.h index 54d4c0cc7..abd416f04 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -660,6 +660,7 @@ #define OPTION_FORWARDPITCH 0x0001 #define OPTION_LOOKAHEAD 0x0002 +#define OPTION_SIGHTONSCREEN 0x0004 #define OPTION_AMMOONSCREEN 0x0020 #define OPTION_SHOWGUNFUNCTION 0x0040 #define OPTION_HEADROLL 0x0080 diff --git a/src/include/game/game_152710.h b/src/include/game/game_152710.h index 83298779b..2f342ab32 100644 --- a/src/include/game/game_152710.h +++ b/src/include/game/game_152710.h @@ -11,7 +11,7 @@ s32 optionsGetForwardPitch(s32 optionsindex); u32 func0f1527a4(void); s32 optionsGetLookAhead(s32 optionsindex); u32 func0f1527ec(void); -s32 func0f152810(s32 optionsindex); +s32 optionsGetSightOnScreen(s32 optionsindex); s32 optionsGetAmmoOnScreen(s32 optionsindex); s32 optionsGetShowGunFunction(s32 optionsindex); s32 optionsGetAlwaysShowTarget(s32 optionsindex); @@ -26,7 +26,7 @@ void optionsSetForwardPitch(s32 optionsindex, bool enable); u32 func0f1529a0(void); void optionsSetLookAhead(s32 optionsindex, bool enable); u32 func0f152a50(void); -u32 func0f152aa8(void); +void optionsSetSightOnScreen(s32 optionsindex, bool enable); void optionsSetAmmoOnScreen(s32 optionsindex, bool enable); void optionsSetShowGunFunction(s32 optionsindex, bool enable); void optionsSetAlwaysShowTarget(s32 optionsindex, bool enable);