diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index 513ee66ad..e232e9666 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -3368,462 +3368,71 @@ void menuOpenDialog(struct menudialogdef *dialogdef, struct menudialog *dialog, dialog->height = dialog->dstheight; } -#if VERSION >= VERSION_NTSC_1_0 -GLOBAL_ASM( -glabel menuPushDialog -/* f0f2f4c: 27bdffc0 */ addiu $sp,$sp,-64 -/* f0f2f50: afbf003c */ sw $ra,0x3c($sp) -/* f0f2f54: afbe0038 */ sw $s8,0x38($sp) -/* f0f2f58: afb70034 */ sw $s7,0x34($sp) -/* f0f2f5c: afb60030 */ sw $s6,0x30($sp) -/* f0f2f60: afb5002c */ sw $s5,0x2c($sp) -/* f0f2f64: afb40028 */ sw $s4,0x28($sp) -/* f0f2f68: afb30024 */ sw $s3,0x24($sp) -/* f0f2f6c: afb20020 */ sw $s2,0x20($sp) -/* f0f2f70: afb1001c */ sw $s1,0x1c($sp) -/* f0f2f74: afb00018 */ sw $s0,0x18($sp) -/* f0f2f78: 1080009d */ beqz $a0,.L0f0f31f0 -/* f0f2f7c: afa40040 */ sw $a0,0x40($sp) -/* f0f2f80: 3c158007 */ lui $s5,%hi(g_MpPlayerNum) -/* f0f2f84: 26b51448 */ addiu $s5,$s5,%lo(g_MpPlayerNum) -/* f0f2f88: 8eaf0000 */ lw $t7,0x0($s5) -/* f0f2f8c: 24160e70 */ addiu $s6,$zero,0xe70 -/* f0f2f90: 3c14800a */ lui $s4,%hi(g_Menus) -/* f0f2f94: 01f60019 */ multu $t7,$s6 -/* f0f2f98: 2694e000 */ addiu $s4,$s4,%lo(g_Menus) -/* f0f2f9c: 0000c012 */ mflo $t8 -/* f0f2fa0: 02982021 */ addu $a0,$s4,$t8 -/* f0f2fa4: 0fc3cde9 */ jal func0f0f37a4 -/* f0f2fa8: 24840840 */ addiu $a0,$a0,0x840 -/* f0f2fac: 8eb90000 */ lw $t9,0x0($s5) -/* f0f2fb0: 03360019 */ multu $t9,$s6 -/* f0f2fb4: 00004012 */ mflo $t0 -/* f0f2fb8: 02881821 */ addu $v1,$s4,$t0 -/* f0f2fbc: 846704f4 */ lh $a3,0x4f4($v1) -/* f0f2fc0: 28e10006 */ slti $at,$a3,0x6 -/* f0f2fc4: 5020008b */ beqzl $at,.L0f0f31f4 -/* f0f2fc8: 8fbf003c */ lw $ra,0x3c($sp) -/* f0f2fcc: 84690460 */ lh $t1,0x460($v1) -/* f0f2fd0: 00075080 */ sll $t2,$a3,0x2 -/* f0f2fd4: 01475023 */ subu $t2,$t2,$a3 -/* f0f2fd8: 2921000a */ slti $at,$t1,0xa -/* f0f2fdc: 10200084 */ beqz $at,.L0f0f31f0 -/* f0f2fe0: 000a50c0 */ sll $t2,$t2,0x3 -/* f0f2fe4: 24eb0001 */ addiu $t3,$a3,0x1 -/* f0f2fe8: 006a8821 */ addu $s1,$v1,$t2 -/* f0f2fec: a46b04f4 */ sh $t3,0x4f4($v1) -/* f0f2ff0: 240c0001 */ addiu $t4,$zero,0x1 -/* f0f2ff4: a22c0478 */ sb $t4,0x478($s1) -/* f0f2ff8: a2200479 */ sb $zero,0x479($s1) -/* f0f2ffc: 8ead0000 */ lw $t5,0x0($s5) -/* f0f3000: 241e0070 */ addiu $s8,$zero,0x70 -/* f0f3004: 26310464 */ addiu $s1,$s1,0x464 -/* f0f3008: 01b60019 */ multu $t5,$s6 -/* f0f300c: 00007012 */ mflo $t6 -/* f0f3010: 028e1821 */ addu $v1,$s4,$t6 -/* f0f3014: 84620460 */ lh $v0,0x460($v1) -/* f0f3018: 005e0019 */ multu $v0,$s8 -/* f0f301c: 24580001 */ addiu $t8,$v0,0x1 -/* f0f3020: a4780460 */ sh $t8,0x460($v1) -/* f0f3024: 00007812 */ mflo $t7 -/* f0f3028: 006f8021 */ addu $s0,$v1,$t7 -/* f0f302c: ae300000 */ sw $s0,0x0($s1) -/* f0f3030: 8eb90000 */ lw $t9,0x0($s5) -/* f0f3034: 02002825 */ or $a1,$s0,$zero -/* f0f3038: 03360019 */ multu $t9,$s6 -/* f0f303c: 00004012 */ mflo $t0 -/* f0f3040: 02884821 */ addu $t1,$s4,$t0 -/* f0f3044: ad3004f8 */ sw $s0,0x4f8($t1) -/* f0f3048: a200006d */ sb $zero,0x6d($s0) -/* f0f304c: 8eaa0000 */ lw $t2,0x0($s5) -/* f0f3050: 8fa40040 */ lw $a0,0x40($sp) -/* f0f3054: 01560019 */ multu $t2,$s6 -/* f0f3058: 00005812 */ mflo $t3 -/* f0f305c: 028b3021 */ addu $a2,$s4,$t3 -/* f0f3060: 0fc3cb3d */ jal menuOpenDialog -/* f0f3064: 00000000 */ nop -/* f0f3068: 0c002f02 */ jal viGetWidth -/* f0f306c: 00000000 */ nop -/* f0f3070: 8e0c001c */ lw $t4,0x1c($s0) -/* f0f3074: 004c6823 */ subu $t5,$v0,$t4 -/* f0f3078: 05a10003 */ bgez $t5,.L0f0f3088 -/* f0f307c: 000d7043 */ sra $t6,$t5,0x1 -/* f0f3080: 25a10001 */ addiu $at,$t5,0x1 -/* f0f3084: 00017043 */ sra $t6,$at,0x1 -.L0f0f3088: -/* f0f3088: 0c002f06 */ jal viGetHeight -/* f0f308c: ae0e002c */ sw $t6,0x2c($s0) -/* f0f3090: 8e0f0020 */ lw $t7,0x20($s0) -/* f0f3094: 004fc023 */ subu $t8,$v0,$t7 -/* f0f3098: 07010003 */ bgez $t8,.L0f0f30a8 -/* f0f309c: 0018c843 */ sra $t9,$t8,0x1 -/* f0f30a0: 27010001 */ addiu $at,$t8,0x1 -/* f0f30a4: 0001c843 */ sra $t9,$at,0x1 -.L0f0f30a8: -/* f0f30a8: ae190030 */ sw $t9,0x30($s0) -/* f0f30ac: 8ea80000 */ lw $t0,0x0($s5) -/* f0f30b0: 8fad0040 */ lw $t5,0x40($sp) -/* f0f30b4: 01160019 */ multu $t0,$s6 -/* f0f30b8: 00004812 */ mflo $t1 -/* f0f30bc: 02891821 */ addu $v1,$s4,$t1 -/* f0f30c0: 906b0e40 */ lbu $t3,0xe40($v1) -/* f0f30c4: 356c0080 */ ori $t4,$t3,0x80 -/* f0f30c8: a06c0e40 */ sb $t4,0xe40($v1) -/* f0f30cc: 8db20014 */ lw $s2,0x14($t5) -/* f0f30d0: 12400037 */ beqz $s2,.L0f0f31b0 -/* f0f30d4: 00000000 */ nop -/* f0f30d8: 822e0014 */ lb $t6,0x14($s1) -/* f0f30dc: 2417ffff */ addiu $s7,$zero,-1 -/* f0f30e0: 2413fec0 */ addiu $s3,$zero,-320 -/* f0f30e4: 29c10005 */ slti $at,$t6,0x5 -/* f0f30e8: 10200031 */ beqz $at,.L0f0f31b0 -/* f0f30ec: 00000000 */ nop -/* f0f30f0: 8eaf0000 */ lw $t7,0x0($s5) -.L0f0f30f4: -/* f0f30f4: 01f60019 */ multu $t7,$s6 -/* f0f30f8: 0000c012 */ mflo $t8 -/* f0f30fc: 02981821 */ addu $v1,$s4,$t8 -/* f0f3100: 84620460 */ lh $v0,0x460($v1) -/* f0f3104: 2841000a */ slti $at,$v0,0xa -/* f0f3108: 10200023 */ beqz $at,.L0f0f3198 -/* f0f310c: 00000000 */ nop -/* f0f3110: 005e0019 */ multu $v0,$s8 -/* f0f3114: 24480001 */ addiu $t0,$v0,0x1 -/* f0f3118: a4680460 */ sh $t0,0x460($v1) -/* f0f311c: 82290014 */ lb $t1,0x14($s1) -/* f0f3120: 02402025 */ or $a0,$s2,$zero -/* f0f3124: 00095080 */ sll $t2,$t1,0x2 -/* f0f3128: 022a5821 */ addu $t3,$s1,$t2 -/* f0f312c: 0000c812 */ mflo $t9 -/* f0f3130: 00798021 */ addu $s0,$v1,$t9 -/* f0f3134: ad700000 */ sw $s0,0x0($t3) -/* f0f3138: 822c0014 */ lb $t4,0x14($s1) -/* f0f313c: 02002825 */ or $a1,$s0,$zero -/* f0f3140: 258d0001 */ addiu $t5,$t4,0x1 -/* f0f3144: a22d0014 */ sb $t5,0x14($s1) -/* f0f3148: a217006d */ sb $s7,0x6d($s0) -/* f0f314c: 8eae0000 */ lw $t6,0x0($s5) -/* f0f3150: 01d60019 */ multu $t6,$s6 -/* f0f3154: 00007812 */ mflo $t7 -/* f0f3158: 028f3021 */ addu $a2,$s4,$t7 -/* f0f315c: 0fc3cb3d */ jal menuOpenDialog -/* f0f3160: 00000000 */ nop -/* f0f3164: ae130014 */ sw $s3,0x14($s0) -/* f0f3168: 0c002f06 */ jal viGetHeight -/* f0f316c: ae13002c */ sw $s3,0x2c($s0) -/* f0f3170: 8e180020 */ lw $t8,0x20($s0) -/* f0f3174: a200003c */ sb $zero,0x3c($s0) -/* f0f3178: 00581823 */ subu $v1,$v0,$t8 -/* f0f317c: 04610003 */ bgez $v1,.L0f0f318c -/* f0f3180: 0003c843 */ sra $t9,$v1,0x1 -/* f0f3184: 24610001 */ addiu $at,$v1,0x1 -/* f0f3188: 0001c843 */ sra $t9,$at,0x1 -.L0f0f318c: -/* f0f318c: ae190018 */ sw $t9,0x18($s0) -/* f0f3190: ae190030 */ sw $t9,0x30($s0) -/* f0f3194: 8e520014 */ lw $s2,0x14($s2) -.L0f0f3198: -/* f0f3198: 12400005 */ beqz $s2,.L0f0f31b0 -/* f0f319c: 00000000 */ nop -/* f0f31a0: 82280014 */ lb $t0,0x14($s1) -/* f0f31a4: 29010005 */ slti $at,$t0,0x5 -/* f0f31a8: 5420ffd2 */ bnezl $at,.L0f0f30f4 -/* f0f31ac: 8eaf0000 */ lw $t7,0x0($s5) -.L0f0f31b0: -/* f0f31b0: 0fc3c27c */ jal menuPlaySound -/* f0f31b4: 24040001 */ addiu $a0,$zero,0x1 -/* f0f31b8: 8fa90040 */ lw $t1,0x40($sp) -/* f0f31bc: 24010002 */ addiu $at,$zero,0x2 -/* f0f31c0: 91220000 */ lbu $v0,0x0($t1) -/* f0f31c4: 54410006 */ bnel $v0,$at,.L0f0f31e0 -/* f0f31c8: 24010003 */ addiu $at,$zero,0x3 -/* f0f31cc: 0fc3c27c */ jal menuPlaySound -/* f0f31d0: 24040004 */ addiu $a0,$zero,0x4 -/* f0f31d4: 8faa0040 */ lw $t2,0x40($sp) -/* f0f31d8: 91420000 */ lbu $v0,0x0($t2) -/* f0f31dc: 24010003 */ addiu $at,$zero,0x3 -.L0f0f31e0: -/* f0f31e0: 54410004 */ bnel $v0,$at,.L0f0f31f4 -/* f0f31e4: 8fbf003c */ lw $ra,0x3c($sp) -/* f0f31e8: 0fc3c27c */ jal menuPlaySound -/* f0f31ec: 2404000e */ addiu $a0,$zero,0xe -.L0f0f31f0: -/* f0f31f0: 8fbf003c */ lw $ra,0x3c($sp) -.L0f0f31f4: -/* f0f31f4: 8fb00018 */ lw $s0,0x18($sp) -/* f0f31f8: 8fb1001c */ lw $s1,0x1c($sp) -/* f0f31fc: 8fb20020 */ lw $s2,0x20($sp) -/* f0f3200: 8fb30024 */ lw $s3,0x24($sp) -/* f0f3204: 8fb40028 */ lw $s4,0x28($sp) -/* f0f3208: 8fb5002c */ lw $s5,0x2c($sp) -/* f0f320c: 8fb60030 */ lw $s6,0x30($sp) -/* f0f3210: 8fb70034 */ lw $s7,0x34($sp) -/* f0f3214: 8fbe0038 */ lw $s8,0x38($sp) -/* f0f3218: 03e00008 */ jr $ra -/* f0f321c: 27bd0040 */ addiu $sp,$sp,0x40 -); -#else -GLOBAL_ASM( -glabel menuPushDialog -/* f0efb68: 27bdffc0 */ addiu $sp,$sp,-64 -/* f0efb6c: afbf003c */ sw $ra,0x3c($sp) -/* f0efb70: afbe0038 */ sw $s8,0x38($sp) -/* f0efb74: afb70034 */ sw $s7,0x34($sp) -/* f0efb78: afb60030 */ sw $s6,0x30($sp) -/* f0efb7c: afb5002c */ sw $s5,0x2c($sp) -/* f0efb80: afb40028 */ sw $s4,0x28($sp) -/* f0efb84: afb30024 */ sw $s3,0x24($sp) -/* f0efb88: afb20020 */ sw $s2,0x20($sp) -/* f0efb8c: afb1001c */ sw $s1,0x1c($sp) -/* f0efb90: afb00018 */ sw $s0,0x18($sp) -/* f0efb94: 1080009d */ beqz $a0,.NB0f0efe0c -/* f0efb98: afa40040 */ sw $a0,0x40($sp) -/* f0efb9c: 3c158007 */ lui $s5,0x8007 -/* f0efba0: 26b53af0 */ addiu $s5,$s5,0x3af0 -/* f0efba4: 8eaf0000 */ lw $t7,0x0($s5) -/* f0efba8: 24160dbc */ addiu $s6,$zero,0xdbc -/* f0efbac: 3c14800a */ lui $s4,0x800a -/* f0efbb0: 01f60019 */ multu $t7,$s6 -/* f0efbb4: 269427c0 */ addiu $s4,$s4,0x27c0 -/* f0efbb8: 0000c012 */ mflo $t8 -/* f0efbbc: 02982021 */ addu $a0,$s4,$t8 -/* f0efbc0: 0fc3c0ba */ jal func0f0f37a4 -/* f0efbc4: 2484079c */ addiu $a0,$a0,0x79c -/* f0efbc8: 8eb90000 */ lw $t9,0x0($s5) -/* f0efbcc: 03360019 */ multu $t9,$s6 -/* f0efbd0: 00004012 */ mflo $t0 -/* f0efbd4: 02881821 */ addu $v1,$s4,$t0 -/* f0efbd8: 84670484 */ lh $a3,0x484($v1) -/* f0efbdc: 28e10006 */ slti $at,$a3,0x6 -/* f0efbe0: 5020008b */ beqzl $at,.NB0f0efe10 -/* f0efbe4: 8fbf003c */ lw $ra,0x3c($sp) -/* f0efbe8: 846903f0 */ lh $t1,0x3f0($v1) -/* f0efbec: 00075080 */ sll $t2,$a3,0x2 -/* f0efbf0: 01475023 */ subu $t2,$t2,$a3 -/* f0efbf4: 29210009 */ slti $at,$t1,0x9 -/* f0efbf8: 10200084 */ beqz $at,.NB0f0efe0c -/* f0efbfc: 000a50c0 */ sll $t2,$t2,0x3 -/* f0efc00: 24eb0001 */ addiu $t3,$a3,0x1 -/* f0efc04: 006a8821 */ addu $s1,$v1,$t2 -/* f0efc08: a46b0484 */ sh $t3,0x484($v1) -/* f0efc0c: 240c0001 */ addiu $t4,$zero,0x1 -/* f0efc10: a22c0408 */ sb $t4,0x408($s1) -/* f0efc14: a2200409 */ sb $zero,0x409($s1) -/* f0efc18: 8ead0000 */ lw $t5,0x0($s5) -/* f0efc1c: 241e0070 */ addiu $s8,$zero,0x70 -/* f0efc20: 263103f4 */ addiu $s1,$s1,0x3f4 -/* f0efc24: 01b60019 */ multu $t5,$s6 -/* f0efc28: 00007012 */ mflo $t6 -/* f0efc2c: 028e1821 */ addu $v1,$s4,$t6 -/* f0efc30: 846203f0 */ lh $v0,0x3f0($v1) -/* f0efc34: 005e0019 */ multu $v0,$s8 -/* f0efc38: 24580001 */ addiu $t8,$v0,0x1 -/* f0efc3c: a47803f0 */ sh $t8,0x3f0($v1) -/* f0efc40: 00007812 */ mflo $t7 -/* f0efc44: 006f8021 */ addu $s0,$v1,$t7 -/* f0efc48: ae300000 */ sw $s0,0x0($s1) -/* f0efc4c: 8eb90000 */ lw $t9,0x0($s5) -/* f0efc50: 02002825 */ or $a1,$s0,$zero -/* f0efc54: 03360019 */ multu $t9,$s6 -/* f0efc58: 00004012 */ mflo $t0 -/* f0efc5c: 02884821 */ addu $t1,$s4,$t0 -/* f0efc60: ad300488 */ sw $s0,0x488($t1) -/* f0efc64: a200006d */ sb $zero,0x6d($s0) -/* f0efc68: 8eaa0000 */ lw $t2,0x0($s5) -/* f0efc6c: 8fa40040 */ lw $a0,0x40($sp) -/* f0efc70: 01560019 */ multu $t2,$s6 -/* f0efc74: 00005812 */ mflo $t3 -/* f0efc78: 028b3021 */ addu $a2,$s4,$t3 -/* f0efc7c: 0fc3be44 */ jal menuOpenDialog -/* f0efc80: 00000000 */ sll $zero,$zero,0x0 -/* f0efc84: 0c002f77 */ jal viGetWidth -/* f0efc88: 00000000 */ sll $zero,$zero,0x0 -/* f0efc8c: 8e0c001c */ lw $t4,0x1c($s0) -/* f0efc90: 004c6823 */ subu $t5,$v0,$t4 -/* f0efc94: 05a10003 */ bgez $t5,.NB0f0efca4 -/* f0efc98: 000d7043 */ sra $t6,$t5,0x1 -/* f0efc9c: 25a10001 */ addiu $at,$t5,0x1 -/* f0efca0: 00017043 */ sra $t6,$at,0x1 -.NB0f0efca4: -/* f0efca4: 0c002f7b */ jal viGetHeight -/* f0efca8: ae0e002c */ sw $t6,0x2c($s0) -/* f0efcac: 8e0f0020 */ lw $t7,0x20($s0) -/* f0efcb0: 004fc023 */ subu $t8,$v0,$t7 -/* f0efcb4: 07010003 */ bgez $t8,.NB0f0efcc4 -/* f0efcb8: 0018c843 */ sra $t9,$t8,0x1 -/* f0efcbc: 27010001 */ addiu $at,$t8,0x1 -/* f0efcc0: 0001c843 */ sra $t9,$at,0x1 -.NB0f0efcc4: -/* f0efcc4: ae190030 */ sw $t9,0x30($s0) -/* f0efcc8: 8ea80000 */ lw $t0,0x0($s5) -/* f0efccc: 8fad0040 */ lw $t5,0x40($sp) -/* f0efcd0: 01160019 */ multu $t0,$s6 -/* f0efcd4: 00004812 */ mflo $t1 -/* f0efcd8: 02891821 */ addu $v1,$s4,$t1 -/* f0efcdc: 906b0d9c */ lbu $t3,0xd9c($v1) -/* f0efce0: 356c0080 */ ori $t4,$t3,0x80 -/* f0efce4: a06c0d9c */ sb $t4,0xd9c($v1) -/* f0efce8: 8db20014 */ lw $s2,0x14($t5) -/* f0efcec: 12400037 */ beqz $s2,.NB0f0efdcc -/* f0efcf0: 00000000 */ sll $zero,$zero,0x0 -/* f0efcf4: 822e0014 */ lb $t6,0x14($s1) -/* f0efcf8: 2417ffff */ addiu $s7,$zero,-1 -/* f0efcfc: 2413fec0 */ addiu $s3,$zero,-320 -/* f0efd00: 29c10005 */ slti $at,$t6,0x5 -/* f0efd04: 10200031 */ beqz $at,.NB0f0efdcc -/* f0efd08: 00000000 */ sll $zero,$zero,0x0 -/* f0efd0c: 8eaf0000 */ lw $t7,0x0($s5) -.NB0f0efd10: -/* f0efd10: 01f60019 */ multu $t7,$s6 -/* f0efd14: 0000c012 */ mflo $t8 -/* f0efd18: 02981821 */ addu $v1,$s4,$t8 -/* f0efd1c: 846203f0 */ lh $v0,0x3f0($v1) -/* f0efd20: 28410009 */ slti $at,$v0,0x9 -/* f0efd24: 10200023 */ beqz $at,.NB0f0efdb4 -/* f0efd28: 00000000 */ sll $zero,$zero,0x0 -/* f0efd2c: 005e0019 */ multu $v0,$s8 -/* f0efd30: 24480001 */ addiu $t0,$v0,0x1 -/* f0efd34: a46803f0 */ sh $t0,0x3f0($v1) -/* f0efd38: 82290014 */ lb $t1,0x14($s1) -/* f0efd3c: 02402025 */ or $a0,$s2,$zero -/* f0efd40: 00095080 */ sll $t2,$t1,0x2 -/* f0efd44: 022a5821 */ addu $t3,$s1,$t2 -/* f0efd48: 0000c812 */ mflo $t9 -/* f0efd4c: 00798021 */ addu $s0,$v1,$t9 -/* f0efd50: ad700000 */ sw $s0,0x0($t3) -/* f0efd54: 822c0014 */ lb $t4,0x14($s1) -/* f0efd58: 02002825 */ or $a1,$s0,$zero -/* f0efd5c: 258d0001 */ addiu $t5,$t4,0x1 -/* f0efd60: a22d0014 */ sb $t5,0x14($s1) -/* f0efd64: a217006d */ sb $s7,0x6d($s0) -/* f0efd68: 8eae0000 */ lw $t6,0x0($s5) -/* f0efd6c: 01d60019 */ multu $t6,$s6 -/* f0efd70: 00007812 */ mflo $t7 -/* f0efd74: 028f3021 */ addu $a2,$s4,$t7 -/* f0efd78: 0fc3be44 */ jal menuOpenDialog -/* f0efd7c: 00000000 */ sll $zero,$zero,0x0 -/* f0efd80: ae130014 */ sw $s3,0x14($s0) -/* f0efd84: 0c002f7b */ jal viGetHeight -/* f0efd88: ae13002c */ sw $s3,0x2c($s0) -/* f0efd8c: 8e180020 */ lw $t8,0x20($s0) -/* f0efd90: a200003c */ sb $zero,0x3c($s0) -/* f0efd94: 00581823 */ subu $v1,$v0,$t8 -/* f0efd98: 04610003 */ bgez $v1,.NB0f0efda8 -/* f0efd9c: 0003c843 */ sra $t9,$v1,0x1 -/* f0efda0: 24610001 */ addiu $at,$v1,0x1 -/* f0efda4: 0001c843 */ sra $t9,$at,0x1 -.NB0f0efda8: -/* f0efda8: ae190018 */ sw $t9,0x18($s0) -/* f0efdac: ae190030 */ sw $t9,0x30($s0) -/* f0efdb0: 8e520014 */ lw $s2,0x14($s2) -.NB0f0efdb4: -/* f0efdb4: 12400005 */ beqz $s2,.NB0f0efdcc -/* f0efdb8: 00000000 */ sll $zero,$zero,0x0 -/* f0efdbc: 82280014 */ lb $t0,0x14($s1) -/* f0efdc0: 29010005 */ slti $at,$t0,0x5 -/* f0efdc4: 5420ffd2 */ bnezl $at,.NB0f0efd10 -/* f0efdc8: 8eaf0000 */ lw $t7,0x0($s5) -.NB0f0efdcc: -/* f0efdcc: 0fc3b5c8 */ jal menuPlaySound -/* f0efdd0: 24040001 */ addiu $a0,$zero,0x1 -/* f0efdd4: 8fa90040 */ lw $t1,0x40($sp) -/* f0efdd8: 24010002 */ addiu $at,$zero,0x2 -/* f0efddc: 91220000 */ lbu $v0,0x0($t1) -/* f0efde0: 54410006 */ bnel $v0,$at,.NB0f0efdfc -/* f0efde4: 24010003 */ addiu $at,$zero,0x3 -/* f0efde8: 0fc3b5c8 */ jal menuPlaySound -/* f0efdec: 24040004 */ addiu $a0,$zero,0x4 -/* f0efdf0: 8faa0040 */ lw $t2,0x40($sp) -/* f0efdf4: 91420000 */ lbu $v0,0x0($t2) -/* f0efdf8: 24010003 */ addiu $at,$zero,0x3 -.NB0f0efdfc: -/* f0efdfc: 54410004 */ bnel $v0,$at,.NB0f0efe10 -/* f0efe00: 8fbf003c */ lw $ra,0x3c($sp) -/* f0efe04: 0fc3b5c8 */ jal menuPlaySound -/* f0efe08: 2404000e */ addiu $a0,$zero,0xe -.NB0f0efe0c: -/* f0efe0c: 8fbf003c */ lw $ra,0x3c($sp) -.NB0f0efe10: -/* f0efe10: 8fb00018 */ lw $s0,0x18($sp) -/* f0efe14: 8fb1001c */ lw $s1,0x1c($sp) -/* f0efe18: 8fb20020 */ lw $s2,0x20($sp) -/* f0efe1c: 8fb30024 */ lw $s3,0x24($sp) -/* f0efe20: 8fb40028 */ lw $s4,0x28($sp) -/* f0efe24: 8fb5002c */ lw $s5,0x2c($sp) -/* f0efe28: 8fb60030 */ lw $s6,0x30($sp) -/* f0efe2c: 8fb70034 */ lw $s7,0x34($sp) -/* f0efe30: 8fbe0038 */ lw $s8,0x38($sp) -/* f0efe34: 03e00008 */ jr $ra -/* f0efe38: 27bd0040 */ addiu $sp,$sp,0x40 -); -#endif +void menuPushDialog(struct menudialogdef *dialogdef) +{ + if (dialogdef) { + func0f0f37a4(&g_Menus[g_MpPlayerNum].unk840); -// regalloc: s1 (layer) and s2 (sibling) are swapped -//void menuPushDialog(struct menudialogdef *dialogdef) -//{ -// if (dialog) { -// func0f0f37a4(&g_Menus[g_MpPlayerNum].unk840); -// -// if (g_Menus[g_MpPlayerNum].depth < 6 && g_Menus[g_MpPlayerNum].numdialogs < 10) { -// struct menulayer *layer = &g_Menus[g_MpPlayerNum].layers[g_Menus[g_MpPlayerNum].depth]; -// struct menudialogdef *sibling; -// struct menudialog *dialog; -// -// g_Menus[g_MpPlayerNum].depth++; -// -// layer->numsiblings = 1; -// layer->cursibling = 0; -// -// dialog = &g_Menus[g_MpPlayerNum].dialogs[g_Menus[g_MpPlayerNum].numdialogs]; -// g_Menus[g_MpPlayerNum].numdialogs++; -// layer->siblings[0] = dialog; -// g_Menus[g_MpPlayerNum].curdialog = dialog; -// dialog->unk6d = 0; -// -// menuOpenDialog(dialog, dialog, &g_Menus[g_MpPlayerNum]); -// -// dialog->dstx = (viGetWidth() - dialog->width) / 2; -// dialog->dsty = (viGetHeight() - dialog->height) / 2; -// -// g_Menus[g_MpPlayerNum].unke40 |= 0x80; -// sibling = dialog->nextsibling; -// -// while (sibling && layer->numsiblings < 5) { -// // If this limit were to be reached, the game would soft lock -// // because sibling is incremented inside the if-statement block. -// if (g_Menus[g_MpPlayerNum].numdialogs < 10) { -// dialog = &g_Menus[g_MpPlayerNum].dialogs[g_Menus[g_MpPlayerNum].numdialogs]; -// g_Menus[g_MpPlayerNum].numdialogs++; -// -// layer->siblings[layer->numsiblings] = dialog; -// layer->numsiblings++; -// -// dialog->unk6d = -1; -// -// menuOpenDialog(sibling, dialog, &g_Menus[g_MpPlayerNum]); -// -// dialog->x = -320; -// dialog->dstx = -320; -// dialog->unk18 = (viGetHeight() - dialog->height) / 2; -// dialog->dsty = dialog->y; -// dialog->type = 0; -// -// sibling = sibling->nextsibling; -// } -// } -// -// menuPlaySound(MENUSOUND_OPENDIALOG); -// -// if (dialog->type == MENUDIALOGTYPE_DANGER) { -// menuPlaySound(MENUSOUND_ERROR); -// } -// -// if (dialog->type == MENUDIALOGTYPE_SUCCESS) { -// menuPlaySound(MENUSOUND_SUCCESS); -// } -// } -// } -//} + if (g_Menus[g_MpPlayerNum].depth < 6 && g_Menus[g_MpPlayerNum].numdialogs < ARRAYCOUNT(g_Menus[0].dialogs)) { + struct menulayer *layer = &g_Menus[g_MpPlayerNum].layers[g_Menus[g_MpPlayerNum].depth]; + struct menudialogdef *sibling; + struct menudialog *dialog; + + g_Menus[g_MpPlayerNum].depth++; + + layer->numsiblings = 1; + layer->cursibling = 0; + + dialog = &g_Menus[g_MpPlayerNum].dialogs[g_Menus[g_MpPlayerNum].numdialogs]; + g_Menus[g_MpPlayerNum].numdialogs++; + layer->siblings[0] = dialog; + g_Menus[g_MpPlayerNum].curdialog = dialog; + dialog->unk6d = 0; + + menuOpenDialog(dialogdef, dialog, &g_Menus[g_MpPlayerNum]); + + dialog->dstx = (viGetWidth() - dialog->width) / 2; + dialog->dsty = (viGetHeight() - dialog->height) / 2; + + g_Menus[g_MpPlayerNum].fm.unke40_00 = true; + sibling = dialogdef->nextsibling; + + while (sibling && layer->numsiblings < 5) { + // If this limit were to be reached, the game would soft lock + // because sibling is incremented inside the if-statement block. + if (g_Menus[g_MpPlayerNum].numdialogs < ARRAYCOUNT(g_Menus[0].dialogs)) { + dialog = &g_Menus[g_MpPlayerNum].dialogs[g_Menus[g_MpPlayerNum].numdialogs]; + g_Menus[g_MpPlayerNum].numdialogs++; + + layer->siblings[layer->numsiblings] = dialog; + layer->numsiblings++; + + dialog->unk6d = -1; + + menuOpenDialog(sibling, dialog, &g_Menus[g_MpPlayerNum]); + + dialog->dstx = dialog->x = -320; + dialog->dsty = dialog->y = (viGetHeight() - dialog->height) / 2; + dialog->type = 0; + + sibling = sibling->nextsibling; + } + } + + if (sibling); + + menuPlaySound(MENUSOUND_OPENDIALOG); + + if (dialogdef->type == MENUDIALOGTYPE_DANGER) { + menuPlaySound(MENUSOUND_ERROR); + } + + if (dialogdef->type == MENUDIALOGTYPE_SUCCESS) { + menuPlaySound(MENUSOUND_SUCCESS); + } + } + } +} #if VERSION >= VERSION_NTSC_1_0 bool func0f0f3220(s32 arg0)