diff --git a/src/game/game_00c490.c b/src/game/game_00c490.c index d3d4ed77c..332ad21bb 100644 --- a/src/game/game_00c490.c +++ b/src/game/game_00c490.c @@ -3619,20 +3619,20 @@ glabel var7f1a8224 /* f00f260: afa3023c */ sw $v1,0x23c($sp) .L0f00f264: /* f00f264: 3c01800a */ lui $at,%hi(g_Vars+0x2b8) -/* f00f268: 3c03800a */ lui $v1,%hi(var8009dfd4) -/* f00f26c: 3c02800a */ lui $v0,%hi(var8009dfc8) +/* f00f268: 3c03800a */ lui $v1,0x800a +/* f00f26c: 3c02800a */ lui $v0,0x800a /* f00f270: afa00238 */ sw $zero,0x238($sp) /* f00f274: afa00234 */ sw $zero,0x234($sp) /* f00f278: ac20a278 */ sw $zero,%lo(g_Vars+0x2b8)($at) -/* f00f27c: 2442dfc8 */ addiu $v0,$v0,%lo(var8009dfc8) -/* f00f280: 2463dfd4 */ addiu $v1,$v1,%lo(var8009dfd4) +/* f00f27c: 2442dfc8 */ addiu $v0,$v0,-8248 +/* f00f280: 2463dfd4 */ addiu $v1,$v1,-8236 .L0f00f284: /* f00f284: 24420002 */ addiu $v0,$v0,0x2 /* f00f288: a4400000 */ sh $zero,0x0($v0) /* f00f28c: 1443fffd */ bne $v0,$v1,.L0f00f284 /* f00f290: a440000c */ sh $zero,0xc($v0) -/* f00f294: 3c01800a */ lui $at,%hi(var8009dfc8) -/* f00f298: a438dfc8 */ sh $t8,%lo(var8009dfc8)($at) +/* f00f294: 3c01800a */ lui $at,0x800a +/* f00f298: a438dfc8 */ sh $t8,-8248($at) /* f00f29c: 28a1005a */ slti $at,$a1,0x5a /* f00f2a0: 10200576 */ beqz $at,.L0f01087c /* f00f2a4: 3c19800a */ lui $t9,%hi(g_StageSetup+0x1c) @@ -4630,9 +4630,9 @@ glabel var7f1a8224 /* f010148: 16180051 */ bne $s0,$t8,.L0f010290 /* f01014c: 00000000 */ sll $zero,$zero,0x0 /* f010150: 8e4b0008 */ lw $t3,0x8($s2) -/* f010154: 3c01800a */ lui $at,%hi(var8009dfc8) +/* f010154: 3c01800a */ lui $at,0x800a /* f010158: 1000004d */ beqz $zero,.L0f010290 -/* f01015c: a42bdfc8 */ sh $t3,%lo(var8009dfc8)($at) +/* f01015c: a42bdfc8 */ sh $t3,-8248($at) /* f010160: 8e4d0004 */ lw $t5,0x4($s2) /* f010164: 3c0142c8 */ lui $at,0x42c8 /* f010168: 44810000 */ mtc1 $at,$f0 @@ -4668,16 +4668,16 @@ glabel var7f1a8224 /* f0101e0: 1020002b */ beqz $at,.L0f010290 /* f0101e4: 00025840 */ sll $t3,$v0,0x1 /* f0101e8: 8e580008 */ lw $t8,0x8($s2) -/* f0101ec: 3c01800a */ lui $at,%hi(var8009dfc8+0x2) +/* f0101ec: 3c01800a */ lui $at,0x800a /* f0101f0: 002b0821 */ addu $at,$at,$t3 -/* f0101f4: a438dfca */ sh $t8,%lo(var8009dfc8+0x2)($at) +/* f0101f4: a438dfca */ sh $t8,-8246($at) /* f0101f8: 8e4c0004 */ lw $t4,0x4($s2) /* f0101fc: 824d000f */ lb $t5,0xf($s2) -/* f010200: 3c01800a */ lui $at,%hi(var8009dfd4+0x2) +/* f010200: 3c01800a */ lui $at,0x800a /* f010204: 000c7040 */ sll $t6,$t4,0x1 /* f010208: 002e0821 */ addu $at,$at,$t6 /* f01020c: 10000020 */ beqz $zero,.L0f010290 -/* f010210: a42ddfd6 */ sh $t5,%lo(var8009dfd4+0x2)($at) +/* f010210: a42ddfd6 */ sh $t5,-8234($at) /* f010214: 0fc042b5 */ jal func0f010ad4 /* f010218: 02402025 */ or $a0,$s2,$zero /* f01021c: 1000001c */ beqz $zero,.L0f010290 diff --git a/src/game/game_0e5ce0.c b/src/game/game_0e5ce0.c index fa0784245..1588e6e6a 100644 --- a/src/game/game_0e5ce0.c +++ b/src/game/game_0e5ce0.c @@ -8245,11 +8245,11 @@ glabel func0f0e98ac /* f0e98e8: 0c0036cc */ jal func0000db30 /* f0e98ec: afa200bc */ sw $v0,0xbc($sp) /* f0e98f0: 8faf0138 */ lw $t7,0x138($sp) -/* f0e98f4: 3c04800a */ lui $a0,%hi(var8009dfc8+0x2) +/* f0e98f4: 3c04800a */ lui $a0,0x800a /* f0e98f8: 000fc040 */ sll $t8,$t7,0x1 /* f0e98fc: 00982021 */ addu $a0,$a0,$t8 /* f0e9900: 0fc5b9f1 */ jal langGet -/* f0e9904: 9484dfca */ lhu $a0,%lo(var8009dfc8+0x2)($a0) +/* f0e9904: 9484dfca */ lhu $a0,-8246($a0) /* f0e9908: 87b90146 */ lh $t9,0x146($sp) /* f0e990c: 8fa30134 */ lw $v1,0x134($sp) /* f0e9910: afa20120 */ sw $v0,0x120($sp) @@ -8891,11 +8891,11 @@ glabel func0f0ea290 /* f0ea2b4: afb10034 */ sw $s1,0x34($sp) /* f0ea2b8: afb00030 */ sw $s0,0x30($sp) /* f0ea2bc: 84b10002 */ lh $s1,0x2($a1) -/* f0ea2c0: 3c14800a */ lui $s4,%hi(var8009dfc8) +/* f0ea2c0: 3c14800a */ lui $s4,0x800a /* f0ea2c4: 00a09025 */ or $s2,$a1,$zero /* f0ea2c8: 0080b025 */ or $s6,$a0,$zero /* f0ea2cc: 24150001 */ addiu $s5,$zero,0x1 -/* f0ea2d0: 2694dfc8 */ addiu $s4,$s4,%lo(var8009dfc8) +/* f0ea2d0: 2694dfc8 */ addiu $s4,$s4,-8248 /* f0ea2d4: 00009825 */ or $s3,$zero,$zero /* f0ea2d8: 24170002 */ addiu $s7,$zero,0x2 /* f0ea2dc: 241e0001 */ addiu $s8,$zero,0x1 @@ -11907,9 +11907,9 @@ glabel var7f1b1e8c /* f0ecdfc: 10000005 */ beqz $zero,.L0f0ece14 /* f0ece00: 8fbf0014 */ lw $ra,0x14($sp) .L0f0ece04: -/* f0ece04: 3c04800a */ lui $a0,%hi(var8009dfc8) +/* f0ece04: 3c04800a */ lui $a0,0x800a /* f0ece08: 0fc5b9f1 */ jal langGet -/* f0ece0c: 9484dfc8 */ lhu $a0,%lo(var8009dfc8)($a0) +/* f0ece0c: 9484dfc8 */ lhu $a0,-8248($a0) /* f0ece10: 8fbf0014 */ lw $ra,0x14($sp) .L0f0ece14: /* f0ece14: 27bd0018 */ addiu $sp,$sp,0x18 diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index f805cc006..255324b5a 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -1760,10 +1760,10 @@ glabel var7f1b28c0 /* f0f1be8: 1000005a */ beqz $zero,.L0f0f1d54 /* f0f1bec: a6590000 */ sh $t9,0x0($s2) /* f0f1bf0: 240c00f0 */ addiu $t4,$zero,0xf0 -/* f0f1bf4: 3c03800a */ lui $v1,%hi(var8009dfc8) +/* f0f1bf4: 3c03800a */ lui $v1,0x800a /* f0f1bf8: 00002025 */ or $a0,$zero,$zero /* f0f1bfc: a62c0000 */ sh $t4,0x0($s1) -/* f0f1c00: 2463dfc8 */ addiu $v1,$v1,%lo(var8009dfc8) +/* f0f1c00: 2463dfc8 */ addiu $v1,$v1,-8248 /* f0f1c04: 946d0002 */ lhu $t5,0x2($v1) .L0f0f1c08: /* f0f1c08: 11a0000d */ beqz $t5,.L0f0f1c40 @@ -1781,8 +1781,8 @@ glabel var7f1b28c0 /* f0f1c38: 00000000 */ sll $zero,$zero,0x0 /* f0f1c3c: 24840001 */ addiu $a0,$a0,0x1 .L0f0f1c40: -/* f0f1c40: 3c09800a */ lui $t1,%hi(var8009dfd4) -/* f0f1c44: 2529dfd4 */ addiu $t1,$t1,%lo(var8009dfd4) +/* f0f1c40: 3c09800a */ lui $t1,0x800a +/* f0f1c44: 2529dfd4 */ addiu $t1,$t1,-8236 /* f0f1c48: 24630002 */ addiu $v1,$v1,0x2 /* f0f1c4c: 5469ffee */ bnel $v1,$t1,.L0f0f1c08 /* f0f1c50: 946d0002 */ lhu $t5,0x2($v1) diff --git a/src/game/game_102240.c b/src/game/game_102240.c index 56db33352..69027cff3 100644 --- a/src/game/game_102240.c +++ b/src/game/game_102240.c @@ -1232,8 +1232,8 @@ glabel menudialog00103608 /* f103660: 01f81021 */ addu $v0,$t7,$t8 /* f103664: ac400850 */ sw $zero,0x850($v0) /* f103668: 3c04800a */ lui $a0,%hi(g_MissionConfig+0x1) -/* f10366c: 3c07800a */ lui $a3,%hi(var8009dfc8) -/* f103670: 24e7dfc8 */ addiu $a3,$a3,%lo(var8009dfc8) +/* f10366c: 3c07800a */ lui $a3,0x800a +/* f103670: 24e7dfc8 */ addiu $a3,$a3,-8248 /* f103674: 9084dfe9 */ lbu $a0,%lo(g_MissionConfig+0x1)($a0) /* f103678: 8c450844 */ lw $a1,0x844($v0) /* f10367c: 0fc03a60 */ jal func0f00e980 @@ -4221,91 +4221,47 @@ glabel menudialog001063d4 /* f1063e0: 00001025 */ or $v0,$zero,$zero ); -GLOBAL_ASM( -glabel menudialog001063e4 -/* f1063e4: 27bdffd8 */ addiu $sp,$sp,-40 -/* f1063e8: 24010064 */ addiu $at,$zero,0x64 -/* f1063ec: afbf0024 */ sw $ra,0x24($sp) -/* f1063f0: afb30020 */ sw $s3,0x20($sp) -/* f1063f4: afb2001c */ sw $s2,0x1c($sp) -/* f1063f8: afb10018 */ sw $s1,0x18($sp) -/* f1063fc: afb00014 */ sw $s0,0x14($sp) -/* f106400: afa5002c */ sw $a1,0x2c($sp) -/* f106404: 14810038 */ bne $a0,$at,.L0f1064e8 -/* f106408: afa60030 */ sw $a2,0x30($sp) -/* f10640c: 3c10800a */ lui $s0,%hi(var8009d0b4) -/* f106410: 8e10d0b4 */ lw $s0,%lo(var8009d0b4)($s0) -/* f106414: 0fc5b367 */ jal getDifficulty -/* f106418: 24110001 */ addiu $s1,$zero,0x1 -/* f10641c: 14400002 */ bnez $v0,.L0f106428 -/* f106420: 00000000 */ sll $zero,$zero,0x0 -/* f106424: 24110003 */ addiu $s1,$zero,0x3 -.L0f106428: -/* f106428: 0fc5b367 */ jal getDifficulty -/* f10642c: 00000000 */ sll $zero,$zero,0x0 -/* f106430: 24010001 */ addiu $at,$zero,0x1 -/* f106434: 14410002 */ bne $v0,$at,.L0f106440 -/* f106438: 3c13800a */ lui $s3,%hi(var8009dfc8) -/* f10643c: 24110002 */ addiu $s1,$zero,0x2 -.L0f106440: -/* f106440: 2673dfc8 */ addiu $s3,$s3,%lo(var8009dfc8) -/* f106444: 240e582a */ addiu $t6,$zero,0x582a -/* f106448: 12000010 */ beqz $s0,.L0f10648c -/* f10644c: a66e0000 */ sh $t6,0x0($s3) -/* f106450: 24030001 */ addiu $v1,$zero,0x1 -/* f106454: 8e020004 */ lw $v0,0x4($s0) -.L0f106458: -/* f106458: 14620004 */ bne $v1,$v0,.L0f10646c -/* f10645c: 00000000 */ sll $zero,$zero,0x0 -/* f106460: 8e0f0008 */ lw $t7,0x8($s0) -/* f106464: a66f0000 */ sh $t7,0x0($s3) -/* f106468: 8e020004 */ lw $v0,0x4($s0) -.L0f10646c: -/* f10646c: 56220005 */ bnel $s1,$v0,.L0f106484 -/* f106470: 8e10000c */ lw $s0,0xc($s0) -/* f106474: 8e180008 */ lw $t8,0x8($s0) -/* f106478: 10000004 */ beqz $zero,.L0f10648c -/* f10647c: a6780000 */ sh $t8,0x0($s3) -/* f106480: 8e10000c */ lw $s0,0xc($s0) -.L0f106484: -/* f106484: 5600fff4 */ bnezl $s0,.L0f106458 -/* f106488: 8e020004 */ lw $v0,0x4($s0) -.L0f10648c: -/* f10648c: 0fc2557d */ jal objectiveGetCount -/* f106490: 00008025 */ or $s0,$zero,$zero -/* f106494: 18400014 */ blez $v0,.L0f1064e8 -/* f106498: 0010c880 */ sll $t9,$s0,0x2 -/* f10649c: 3c08800a */ lui $t0,%hi(g_Objectives) -/* f1064a0: 2508d060 */ addiu $t0,$t0,%lo(g_Objectives) -/* f1064a4: 03289021 */ addu $s2,$t9,$t0 -/* f1064a8: 8e420000 */ lw $v0,0x0($s2) -.L0f1064ac: -/* f1064ac: 00104840 */ sll $t1,$s0,0x1 -/* f1064b0: 02698821 */ addu $s1,$s3,$t1 -/* f1064b4: 50400007 */ beqzl $v0,.L0f1064d4 -/* f1064b8: 26100001 */ addiu $s0,$s0,0x1 -/* f1064bc: 8c4a0008 */ lw $t2,0x8($v0) -/* f1064c0: 02002025 */ or $a0,$s0,$zero -/* f1064c4: 0fc25594 */ jal objectiveGetDifficultyBits -/* f1064c8: a62a0002 */ sh $t2,0x2($s1) -/* f1064cc: a622000e */ sh $v0,0xe($s1) -/* f1064d0: 26100001 */ addiu $s0,$s0,0x1 -.L0f1064d4: -/* f1064d4: 0fc2557d */ jal objectiveGetCount -/* f1064d8: 26520004 */ addiu $s2,$s2,0x4 -/* f1064dc: 0202082a */ slt $at,$s0,$v0 -/* f1064e0: 5420fff2 */ bnezl $at,.L0f1064ac -/* f1064e4: 8e420000 */ lw $v0,0x0($s2) -.L0f1064e8: -/* f1064e8: 8fbf0024 */ lw $ra,0x24($sp) -/* f1064ec: 8fb00014 */ lw $s0,0x14($sp) -/* f1064f0: 8fb10018 */ lw $s1,0x18($sp) -/* f1064f4: 8fb2001c */ lw $s2,0x1c($sp) -/* f1064f8: 8fb30020 */ lw $s3,0x20($sp) -/* f1064fc: 27bd0028 */ addiu $sp,$sp,0x28 -/* f106500: 03e00008 */ jr $ra -/* f106504: 00001025 */ or $v0,$zero,$zero -); +s32 menudialog001063e4(u32 operation, s32 arg1, s32 arg2) +{ + if (operation == MENUOP_100) { + struct objectivething *thing = var8009d0b4; + struct objective *objective; + s32 iVar3 = 1; + s32 i; + + if (getDifficulty() == DIFF_A) { + iVar3 = 3; + } + + if (getDifficulty() == DIFF_SA) { + iVar3 = 2; + } + + g_Briefing.objectivenames[0] = L_MISC(42); // "No briefing for this mission" + + while (thing) { + if (thing->unk04 == 1) { + g_Briefing.objectivenames[0] = thing->name; + } + + if (thing->unk04 == iVar3) { + g_Briefing.objectivenames[0] = thing->name; + break; + } + + thing = thing->next; + } + + for (i = 0; i < objectiveGetCount(); i++) { + if (g_Objectives[i]) { + g_Briefing.objectivenames[i + 1] = g_Objectives[i]->text; + g_Briefing.objectivedifficulties[i + 1] = objectiveGetDifficultyBits(i); + } + } + } + + return 0; +} char *soloMenuTitlePauseStatus(struct menu_dialog *dialog) { diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index a6224991b..a9115331e 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -15458,7 +15458,7 @@ u32 var8009d0a4 = 0; u32 var8009d0a8 = 0; u32 var8009d0ac = 0; u32 var8009d0b0 = 0; -u32 var8009d0b4 = 0; +struct objectivething *var8009d0b4 = NULL; struct criteria_roomentered *g_RoomEnteredCriterias = NULL; struct criteria_multiroomentered *g_MultiroomEnteredCriterias = NULL; struct criteria_holograph *g_HolographCriterias = NULL; @@ -16116,12 +16116,7 @@ char g_CheatMarqueeString[252] = {0}; u32 var8009dfbc = 0; u32 var8009dfc0 = 0; u32 var8009dfc4 = 0; -u32 var8009dfc8 = 0; -u32 var8009dfcc = 0; -u32 var8009dfd0 = 0; -u32 var8009dfd4 = 0; -u32 var8009dfd8 = 0; -u32 var8009dfdc = 0; +struct briefing g_Briefing = {0}; u32 var8009dfe0 = 0; u32 var8009dfe4 = 0; struct missionconfig g_MissionConfig = {0}; diff --git a/src/include/game/game_102240.h b/src/include/game/game_102240.h index 9aa7b8cd3..d2bebcb89 100644 --- a/src/include/game/game_102240.h +++ b/src/include/game/game_102240.h @@ -29,7 +29,7 @@ bool menudialogCoopAntiOptions(u32 operation, struct menu_dialog *dialog, struct s32 menudialog0010559c(u32, u32, u32 *); s32 menudialog00105c54(u32, u32, u32 *); s32 menudialog001063d4(u32, u32, u32 *); -s32 menudialog001063e4(u32, u32, u32 *); +s32 menudialog001063e4(u32 operation, s32 arg1, s32 arg2); s32 menuhandler001024dc(u32 operation, struct menu_item *item, s32 *value); s32 menuhandler001024fc(u32 operation, struct menu_item *item, s32 *value); s32 menuhandlerAcceptMission(u32 operation, struct menu_item *item, s32 *value); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 330274840..5facaabdb 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -571,7 +571,7 @@ extern u8 *g_GeCreditsData; extern struct objective *g_Objectives[MAX_OBJECTIVES]; extern u32 var8009d088; extern u32 var8009d0b0; -extern u32 var8009d0b4; +extern struct objectivething *var8009d0b4; extern struct criteria_roomentered *g_RoomEnteredCriterias; extern struct criteria_multiroomentered *g_MultiroomEnteredCriterias; extern struct criteria_holograph *g_HolographCriterias; @@ -632,8 +632,7 @@ extern u32 var8009deb0; extern char g_CheatMarqueeString[]; extern u32 var8009dfbc; extern u32 var8009dfc0; -extern u32 var8009dfc8; -extern u32 var8009dfd4; +extern struct briefing g_Briefing; extern struct missionconfig g_MissionConfig; extern struct menustackitem g_MenuStack[4]; extern u32 g_MenuCount; diff --git a/src/include/types.h b/src/include/types.h index 34ddb4554..f872b3644 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4893,6 +4893,11 @@ struct objective { /*0x0f*/ s8 difficulties; }; +struct briefing { + u16 objectivenames[6]; + u16 objectivedifficulties[6]; +}; + struct criteria_roomentered { u32 unk00; u32 pad; @@ -4915,6 +4920,13 @@ struct criteria_holograph { struct criteria_holograph *next; }; +struct objectivething { + u32 unk00; + u32 unk04; + u32 name; + struct objectivething *next; +}; + struct mppreset { u16 name; u32 unk04;