diff --git a/src/game/game_066310.c b/src/game/game_066310.c index 3b5853939..cc845e9f4 100644 --- a/src/game/game_066310.c +++ b/src/game/game_066310.c @@ -49225,7 +49225,7 @@ glabel func0f0908b8 /* f0909fc: 10000006 */ beqz $zero,.L0f090a18 /* f090a00: 24f00002 */ addiu $s0,$a3,0x2 .L0f090a04: -/* f090a04: 0fc54b60 */ jal func0f152d80 +/* f090a04: 0fc54b60 */ jal optionsGetEffectiveScreenSize /* f090a08: 00000000 */ sll $zero,$zero,0x0 /* f090a0c: 10400002 */ beqz $v0,.L0f090a18 /* f090a10: 00000000 */ sll $zero,$zero,0x0 diff --git a/src/game/game_097a50.c b/src/game/game_097a50.c index 985a92377..a395397f9 100644 --- a/src/game/game_097a50.c +++ b/src/game/game_097a50.c @@ -22318,7 +22318,7 @@ glabel func0f0aa86c /* f0aaa7c: 10000007 */ beqz $zero,.L0f0aaa9c /* f0aaa80: afb90128 */ sw $t9,0x128($sp) .L0f0aaa84: -/* f0aaa84: 0fc54b60 */ jal func0f152d80 +/* f0aaa84: 0fc54b60 */ jal optionsGetEffectiveScreenSize /* f0aaa88: 00000000 */ sll $zero,$zero,0x0 /* f0aaa8c: 10400003 */ beqz $v0,.L0f0aaa9c /* f0aaa90: 8fae0128 */ lw $t6,0x128($sp) diff --git a/src/game/game_0b28d0.c b/src/game/game_0b28d0.c index f2c7af988..4e2aaab94 100644 --- a/src/game/game_0b28d0.c +++ b/src/game/game_0b28d0.c @@ -11837,7 +11837,7 @@ glabel func0f0bcaa0 /* f0bcc90: 1000005f */ beqz $zero,.L0f0bce10 /* f0bcc94: 00182403 */ sra $a0,$t8,0x10 .L0f0bcc98: -/* f0bcc98: 0fc54b60 */ jal func0f152d80 +/* f0bcc98: 0fc54b60 */ jal optionsGetEffectiveScreenSize /* f0bcc9c: 00000000 */ sll $zero,$zero,0x0 /* f0bcca0: 24090001 */ addiu $t1,$zero,0x1 /* f0bcca4: 1449000b */ bne $v0,$t1,.L0f0bccd4 @@ -11853,7 +11853,7 @@ glabel func0f0bcaa0 /* f0bcccc: 10000050 */ beqz $zero,.L0f0bce10 /* f0bccd0: 848405de */ lh $a0,0x5de($a0) .L0f0bccd4: -/* f0bccd4: 0fc54b60 */ jal func0f152d80 +/* f0bccd4: 0fc54b60 */ jal optionsGetEffectiveScreenSize /* f0bccd8: 00000000 */ sll $zero,$zero,0x0 /* f0bccdc: 24010002 */ addiu $at,$zero,0x2 /* f0bcce0: 1441000c */ bne $v0,$at,.L0f0bcd14 @@ -12134,7 +12134,7 @@ glabel func0f0bce24 /* f0bd0b4: 100000a3 */ beqz $zero,.L0f0bd344 /* f0bd0b8: 000a3403 */ sra $a2,$t2,0x10 .L0f0bd0bc: -/* f0bd0bc: 0fc54b60 */ jal func0f152d80 +/* f0bd0bc: 0fc54b60 */ jal optionsGetEffectiveScreenSize /* f0bd0c0: 00000000 */ sll $zero,$zero,0x0 /* f0bd0c4: 24090001 */ addiu $t1,$zero,0x1 /* f0bd0c8: 14490046 */ bne $v0,$t1,.L0f0bd1e4 @@ -12211,7 +12211,7 @@ glabel func0f0bce24 /* f0bd1dc: 10000059 */ beqz $zero,.L0f0bd344 /* f0bd1e0: 84c605e2 */ lh $a2,0x5e2($a2) .L0f0bd1e4: -/* f0bd1e4: 0fc54b60 */ jal func0f152d80 +/* f0bd1e4: 0fc54b60 */ jal optionsGetEffectiveScreenSize /* f0bd1e8: 00000000 */ sll $zero,$zero,0x0 /* f0bd1ec: 24010002 */ addiu $at,$zero,0x2 /* f0bd1f0: 1441000c */ bne $v0,$at,.L0f0bd224 diff --git a/src/game/game_0dcdb0.c b/src/game/game_0dcdb0.c index c5ae64554..f20c1b455 100644 --- a/src/game/game_0dcdb0.c +++ b/src/game/game_0dcdb0.c @@ -4553,7 +4553,7 @@ glabel func0f0dcef4 /* f0dd14c: 24e70002 */ addiu $a3,$a3,0x2 .L0f0dd150: /* f0dd150: afa3003c */ sw $v1,0x3c($sp) -/* f0dd154: 0fc54b60 */ jal func0f152d80 +/* f0dd154: 0fc54b60 */ jal optionsGetEffectiveScreenSize /* f0dd158: afa70080 */ sw $a3,0x80($sp) /* f0dd15c: 8fa3003c */ lw $v1,0x3c($sp) /* f0dd160: 24050001 */ addiu $a1,$zero,0x1 @@ -4785,7 +4785,7 @@ glabel func0f0dd2ac /* f0dd48c: 10000006 */ beqz $zero,.L0f0dd4a8 /* f0dd490: 26100002 */ addiu $s0,$s0,0x2 .L0f0dd494: -/* f0dd494: 0fc54b60 */ jal func0f152d80 +/* f0dd494: 0fc54b60 */ jal optionsGetEffectiveScreenSize /* f0dd498: 00000000 */ sll $zero,$zero,0x0 /* f0dd49c: 10400002 */ beqz $v0,.L0f0dd4a8 /* f0dd4a0: 00000000 */ sll $zero,$zero,0x0 @@ -6616,7 +6616,7 @@ glabel func0f0de7fc /* f0dee1c: 24840003 */ addiu $a0,$a0,0x3 .L0f0dee20: /* f0dee20: afa40030 */ sw $a0,0x30($sp) -/* f0dee24: 0fc54b60 */ jal func0f152d80 +/* f0dee24: 0fc54b60 */ jal optionsGetEffectiveScreenSize /* f0dee28: afa90034 */ sw $t1,0x34($sp) /* f0dee2c: 8fa40030 */ lw $a0,0x30($sp) /* f0dee30: 10400002 */ beqz $v0,.L0f0dee3c diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index 86b1c9f03..00394245a 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -8224,7 +8224,7 @@ glabel func0f0f7728 /* f0f783c: afa30030 */ sw $v1,0x30($sp) /* f0f7840: afa40028 */ sw $a0,0x28($sp) /* f0f7844: afa60034 */ sw $a2,0x34($sp) -/* f0f7848: 0fc54b60 */ jal func0f152d80 +/* f0f7848: 0fc54b60 */ jal optionsGetEffectiveScreenSize /* f0f784c: afa7002c */ sw $a3,0x2c($sp) /* f0f7850: 24010002 */ addiu $at,$zero,0x2 /* f0f7854: 8fa30030 */ lw $v1,0x30($sp) @@ -17382,7 +17382,7 @@ glabel func0f0ff7bc /* f0ff844: 01856821 */ addu $t5,$t4,$a1 /* f0ff848: 15a10006 */ bne $t5,$at,.L0f0ff864 /* f0ff84c: 00000000 */ sll $zero,$zero,0x0 -/* f0ff850: 0fc54b60 */ jal func0f152d80 +/* f0ff850: 0fc54b60 */ jal optionsGetEffectiveScreenSize /* f0ff854: 00000000 */ sll $zero,$zero,0x0 /* f0ff858: 10400002 */ beqz $v0,.L0f0ff864 /* f0ff85c: 240e0001 */ addiu $t6,$zero,0x1 @@ -19814,7 +19814,7 @@ glabel func0f100ad0 /* f101b64: 01c6c821 */ addu $t9,$t6,$a2 /* f101b68: 17210019 */ bne $t9,$at,.L0f101bd0 /* f101b6c: 00000000 */ sll $zero,$zero,0x0 -/* f101b70: 0fc54b60 */ jal func0f152d80 +/* f101b70: 0fc54b60 */ jal optionsGetEffectiveScreenSize /* f101b74: 00000000 */ sll $zero,$zero,0x0 /* f101b78: 10400015 */ beqz $v0,.L0f101bd0 /* f101b7c: 00000000 */ sll $zero,$zero,0x0 diff --git a/src/game/game_102240.c b/src/game/game_102240.c index f98071efb..b0a05dcc6 100644 --- a/src/game/game_102240.c +++ b/src/game/game_102240.c @@ -536,7 +536,7 @@ glabel menuhandlerScreenSize /* f1027e8: 10000005 */ beqz $zero,.L0f102800 /* f1027ec: ac4d0458 */ sw $t5,0x458($v0) .L0f1027f0: -/* f1027f0: 0fc54b60 */ jal func0f152d80 +/* f1027f0: 0fc54b60 */ jal optionsGetEffectiveScreenSize /* f1027f4: afa60030 */ sw $a2,0x30($sp) /* f1027f8: 8fa60030 */ lw $a2,0x30($sp) /* f1027fc: acc20000 */ sw $v0,0x0($a2) diff --git a/src/game/game_152710.c b/src/game/game_152710.c index 91e4972b2..d088a6a43 100644 --- a/src/game/game_152710.c +++ b/src/game/game_152710.c @@ -215,116 +215,37 @@ void optionsSetHeadRoll(s32 optionsindex, bool enable) } } -GLOBAL_ASM( -glabel func0f152d80 -/* f152d80: 3c0e8009 */ lui $t6,0x8009 -/* f152d84: 91ce0af0 */ lbu $t6,0xaf0($t6) -/* f152d88: 24010001 */ addiu $at,$zero,0x1 -/* f152d8c: 3c02800a */ lui $v0,0x800a -/* f152d90: 15c10003 */ bne $t6,$at,.L0f152da0 -/* f152d94: 00000000 */ sll $zero,$zero,0x0 -/* f152d98: 03e00008 */ jr $ra -/* f152d9c: 00001025 */ or $v0,$zero,$zero -.L0f152da0: -/* f152da0: 8c4219c4 */ lw $v0,0x19c4($v0) -/* f152da4: 2401000d */ addiu $at,$zero,0xd -/* f152da8: 3c048007 */ lui $a0,%hi(g_MenuStackDepth) -/* f152dac: 14410012 */ bne $v0,$at,.L0f152df8 -/* f152db0: 24841448 */ addiu $a0,$a0,%lo(g_MenuStackDepth) -/* f152db4: 0000c0c0 */ sll $t8,$zero,0x3 -/* f152db8: 0300c023 */ subu $t8,$t8,$zero -/* f152dbc: 0018c140 */ sll $t8,$t8,0x5 -/* f152dc0: 0300c023 */ subu $t8,$t8,$zero -/* f152dc4: 0018c100 */ sll $t8,$t8,0x4 -/* f152dc8: 3c19800a */ lui $t9,0x800a -/* f152dcc: ac800000 */ sw $zero,0x0($a0) -/* f152dd0: 0338c821 */ addu $t9,$t9,$t8 -/* f152dd4: 8f39e4f8 */ lw $t9,-0x1b08($t9) -/* f152dd8: 3c08800a */ lui $t0,0x800a -/* f152ddc: 13200006 */ beqz $t9,.L0f152df8 -/* f152de0: 00000000 */ sll $zero,$zero,0x0 -/* f152de4: 8d08dfc0 */ lw $t0,-0x2040($t0) -/* f152de8: 11000003 */ beqz $t0,.L0f152df8 -/* f152dec: 00000000 */ sll $zero,$zero,0x0 -/* f152df0: 03e00008 */ jr $ra -/* f152df4: 00001025 */ or $v0,$zero,$zero -.L0f152df8: -/* f152df8: 3c048007 */ lui $a0,%hi(g_MenuStackDepth) -/* f152dfc: 24841448 */ addiu $a0,$a0,%lo(g_MenuStackDepth) -/* f152e00: 8c890000 */ lw $t1,0x0($a0) -/* f152e04: 3c03800a */ lui $v1,0x800a -/* f152e08: 3c06800a */ lui $a2,%hi(g_Vars) -/* f152e0c: 000950c0 */ sll $t2,$t1,0x3 -/* f152e10: 01495023 */ subu $t2,$t2,$t1 -/* f152e14: 000a5080 */ sll $t2,$t2,0x2 -/* f152e18: 01495021 */ addu $t2,$t2,$t1 -/* f152e1c: 000a50c0 */ sll $t2,$t2,0x3 -/* f152e20: 01495023 */ subu $t2,$t2,$t1 -/* f152e24: 000a5100 */ sll $t2,$t2,0x4 -/* f152e28: 006a1821 */ addu $v1,$v1,$t2 -/* f152e2c: 8c63e4f8 */ lw $v1,-0x1b08($v1) -/* f152e30: 24c69fc0 */ addiu $a2,$a2,%lo(g_Vars) -/* f152e34: 5060000f */ beqzl $v1,.L0f152e74 -/* f152e38: 8cce006c */ lw $t6,0x6c($a2) -/* f152e3c: 8c640000 */ lw $a0,0x0($v1) -/* f152e40: 3c0b8007 */ lui $t3,%hi(menudialog_control4) -/* f152e44: 256b2174 */ addiu $t3,$t3,%lo(menudialog_control4) -/* f152e48: 11640007 */ beq $t3,$a0,.L0f152e68 -/* f152e4c: 3c0c8007 */ lui $t4,%hi(menudialog_control3) -/* f152e50: 258c2120 */ addiu $t4,$t4,%lo(menudialog_control3) -/* f152e54: 11840004 */ beq $t4,$a0,.L0f152e68 -/* f152e58: 3c0d8007 */ lui $t5,%hi(menudialog_control2) -/* f152e5c: 25ad20cc */ addiu $t5,$t5,%lo(menudialog_control2) -/* f152e60: 55a40004 */ bnel $t5,$a0,.L0f152e74 -/* f152e64: 8cce006c */ lw $t6,0x6c($a2) -.L0f152e68: -/* f152e68: 03e00008 */ jr $ra -/* f152e6c: 00001025 */ or $v0,$zero,$zero -/* f152e70: 8cce006c */ lw $t6,0x6c($a2) -.L0f152e74: -/* f152e74: 00001825 */ or $v1,$zero,$zero -/* f152e78: 00002025 */ or $a0,$zero,$zero -/* f152e7c: 11c00003 */ beqz $t6,.L0f152e8c -/* f152e80: 00002825 */ or $a1,$zero,$zero -/* f152e84: 10000001 */ beqz $zero,.L0f152e8c -/* f152e88: 24030001 */ addiu $v1,$zero,0x1 -.L0f152e8c: -/* f152e8c: 8ccf0068 */ lw $t7,0x68($a2) -/* f152e90: 11e00003 */ beqz $t7,.L0f152ea0 -/* f152e94: 00000000 */ sll $zero,$zero,0x0 -/* f152e98: 10000001 */ beqz $zero,.L0f152ea0 -/* f152e9c: 24040001 */ addiu $a0,$zero,0x1 -.L0f152ea0: -/* f152ea0: 8cd80064 */ lw $t8,0x64($a2) -/* f152ea4: 13000003 */ beqz $t8,.L0f152eb4 -/* f152ea8: 00000000 */ sll $zero,$zero,0x0 -/* f152eac: 10000001 */ beqz $zero,.L0f152eb4 -/* f152eb0: 24050001 */ addiu $a1,$zero,0x1 -.L0f152eb4: -/* f152eb4: 8cd90070 */ lw $t9,0x70($a2) -/* f152eb8: 00003025 */ or $a2,$zero,$zero -/* f152ebc: 13200003 */ beqz $t9,.L0f152ecc -/* f152ec0: 00000000 */ sll $zero,$zero,0x0 -/* f152ec4: 10000001 */ beqz $zero,.L0f152ecc -/* f152ec8: 24060001 */ addiu $a2,$zero,0x1 -.L0f152ecc: -/* f152ecc: 00c54021 */ addu $t0,$a2,$a1 -/* f152ed0: 01044821 */ addu $t1,$t0,$a0 -/* f152ed4: 01235021 */ addu $t2,$t1,$v1 -/* f152ed8: 29410002 */ slti $at,$t2,0x2 -/* f152edc: 10200003 */ beqz $at,.L0f152eec -/* f152ee0: 24010003 */ addiu $at,$zero,0x3 -/* f152ee4: 14410003 */ bne $v0,$at,.L0f152ef4 -/* f152ee8: 00000000 */ sll $zero,$zero,0x0 -.L0f152eec: -/* f152eec: 03e00008 */ jr $ra -/* f152ef0: 00001025 */ or $v0,$zero,$zero -.L0f152ef4: -/* f152ef4: 3c028008 */ lui $v0,0x8008 -/* f152ef8: 8c42fab0 */ lw $v0,-0x550($v0) -/* f152efc: 03e00008 */ jr $ra -/* f152f00: 00000000 */ sll $zero,$zero,0x0 -); +s32 optionsGetEffectiveScreenSize(void) +{ + if (var80090af0 == 1) { + return SCREENSIZE_FULL; + } + + if (var800a19c4 == 13) { + g_MenuStackDepth = 0; + + if (g_MenuStack[g_MenuStackDepth].unk00 && var8009dfc0) { + return SCREENSIZE_FULL; + } + } + + if (g_MenuStack[g_MenuStackDepth].unk00 && ( + g_MenuStack[g_MenuStackDepth].unk00->dialog == &menudialog_control4 || + g_MenuStack[g_MenuStackDepth].unk00->dialog == &menudialog_control3 || + g_MenuStack[g_MenuStackDepth].unk00->dialog == &menudialog_control2)) { + return SCREENSIZE_FULL; + } + + if ((g_Vars.players[0] ? 1 : 0) + + (g_Vars.players[1] ? 1 : 0) + + (g_Vars.players[2] ? 1 : 0) + + (g_Vars.players[3] ? 1 : 0) >= 2 || + var800a19c4 == 3) { + return SCREENSIZE_FULL; + } + + return g_ScreenSize; +} s32 optionsGetScreenSize(void) { diff --git a/src/game/game_187770.c b/src/game/game_187770.c index 0e0a58c1c..71a2dd8ff 100644 --- a/src/game/game_187770.c +++ b/src/game/game_187770.c @@ -9849,7 +9849,7 @@ glabel func0f18f874 /* f18fbc4: 10000008 */ beqz $zero,.L0f18fbe8 /* f18fbc8: ae0c0000 */ sw $t4,0x0($s0) .L0f18fbcc: -/* f18fbcc: 0fc54b60 */ jal func0f152d80 +/* f18fbcc: 0fc54b60 */ jal optionsGetEffectiveScreenSize /* f18fbd0: 00000000 */ sll $zero,$zero,0x0 /* f18fbd4: 50400005 */ beqzl $v0,.L0f18fbec /* f18fbd8: 24180010 */ addiu $t8,$zero,0x10 diff --git a/src/include/game/game_152710.h b/src/include/game/game_152710.h index 05bde4d81..b38b703e6 100644 --- a/src/include/game/game_152710.h +++ b/src/include/game/game_152710.h @@ -36,7 +36,7 @@ void optionsSetShowMissionTime(s32 optionsindex, bool enable); void optionsSetInGameSubtitles(s32 enable); void optionsSetCutsceneSubtitles(s32 enable); void optionsSetHeadRoll(s32 optionsindex, bool enable); -u32 func0f152d80(void); +s32 optionsGetEffectiveScreenSize(void); s32 optionsGetScreenSize(void); void optionsSetScreenSize(s32 size); s32 optionsGetScreenRatio(void);