From e69571233fb810543123de34f2edf7596be21f8d Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 17 Oct 2020 14:03:25 +1000 Subject: [PATCH] Sort out g_Briefing struct --- src/game/game_00c490.c | 12 ++++++------ src/game/game_0109d0.c | 8 ++++---- src/game/game_102240.c | 28 ++++++++++++++-------------- src/game/menu/items.c | 6 +++--- src/gvars/gvars.c | 3 +-- src/include/gvars/gvars.h | 3 +-- src/include/types.h | 14 +++++--------- 7 files changed, 34 insertions(+), 40 deletions(-) diff --git a/src/game/game_00c490.c b/src/game/game_00c490.c index 587840f02..3ff315855 100644 --- a/src/game/game_00c490.c +++ b/src/game/game_00c490.c @@ -3058,11 +3058,11 @@ void setupParseObjects(s32 stagenum) g_Vars.textoverrides = NULL; for (j = 0; j != 6; j++) { - g_Briefing.objectivenames[j + 1] = 0; - g_Briefing.objectivedifficulties[j + 1] = 0; + g_Briefing.objectivenames[j] = 0; + g_Briefing.objectivedifficulties[j] = 0; } - g_Briefing.objectivenames[0] = L_MISC(42); // "No briefing for this mission" + g_Briefing.briefingtextnum = L_MISC(42); // "No briefing for this mission" if (stagenum < STAGE_TITLE) { if (g_StageSetup.padfiledata) { @@ -3556,7 +3556,7 @@ void setupParseObjects(s32 stagenum) } if (briefing->type == wanttype) { - g_Briefing.objectivenames[0] = briefing->text; + g_Briefing.briefingtextnum = briefing->text; } } break; @@ -3577,8 +3577,8 @@ void setupParseObjects(s32 stagenum) func0f010a98(obj); if (objective->index < 7) { - g_Briefing.objectivenames[objective->index + 1] = objective->text; - g_Briefing.objectivedifficulties[objective->index + 1] = (s8)objective->difficulty; + g_Briefing.objectivenames[objective->index] = objective->text; + g_Briefing.objectivedifficulties[objective->index] = (s8)objective->difficulty; } } break; diff --git a/src/game/game_0109d0.c b/src/game/game_0109d0.c index 578b20d4d..bf5c66b69 100644 --- a/src/game/game_0109d0.c +++ b/src/game/game_0109d0.c @@ -44,8 +44,8 @@ glabel func0f0109d0 /* f010a30: ac40fffc */ sw $zero,-0x4($v0) /* f010a34: 3c01800a */ lui $at,%hi(g_TagsLinkedList) /* f010a38: ac20d0b0 */ sw $zero,%lo(g_TagsLinkedList)($at) -/* f010a3c: 3c01800a */ lui $at,%hi(var8009d0b4) -/* f010a40: ac20d0b4 */ sw $zero,%lo(var8009d0b4)($at) +/* f010a3c: 3c01800a */ lui $at,%hi(g_BriefingObjs) +/* f010a40: ac20d0b4 */ sw $zero,%lo(g_BriefingObjs)($at) /* f010a44: 3c01800a */ lui $at,%hi(g_RoomEnteredCriterias) /* f010a48: ac20d0b8 */ sw $zero,%lo(g_RoomEnteredCriterias)($at) /* f010a4c: 8fbf0014 */ lw $ra,0x14($sp) @@ -69,8 +69,8 @@ glabel tagInsert GLOBAL_ASM( glabel briefingInsert -/* f010a80: 3c02800a */ lui $v0,%hi(var8009d0b4) -/* f010a84: 2442d0b4 */ addiu $v0,$v0,%lo(var8009d0b4) +/* f010a80: 3c02800a */ lui $v0,%hi(g_BriefingObjs) +/* f010a84: 2442d0b4 */ addiu $v0,$v0,%lo(g_BriefingObjs) /* f010a88: 8c4e0000 */ lw $t6,0x0($v0) /* f010a8c: ac8e000c */ sw $t6,0xc($a0) /* f010a90: 03e00008 */ jr $ra diff --git a/src/game/game_102240.c b/src/game/game_102240.c index f46df0222..6a05bf63c 100644 --- a/src/game/game_102240.c +++ b/src/game/game_102240.c @@ -720,7 +720,7 @@ s32 menudialog00103608(u32 operation, struct menudialog *dialog, union handlerda g_Menus[g_MpPlayerNum].unk848, &g_Briefing); break; case MENUOP_CLOSE: - langClearBank(var8009dfe0[1]); + langClearBank(g_Briefing.langbank); break; } @@ -3895,38 +3895,38 @@ struct menudialog g_SoloAbortShortMenuDialog = { s32 soloMenuDialogPauseStatus(u32 operation, struct menudialog *dialog, union handlerdata *data) { if (operation == MENUOP_OPEN) { - struct objectivething *thing = var8009d0b4; + struct briefingobj *briefing = g_BriefingObjs; struct objective *objective; - s32 iVar3 = 1; + s32 wanttype = BRIEFINGTYPE_TEXT_PA; s32 i; if (getDifficulty() == DIFF_A) { - iVar3 = 3; + wanttype = BRIEFINGTYPE_TEXT_A; } if (getDifficulty() == DIFF_SA) { - iVar3 = 2; + wanttype = BRIEFINGTYPE_TEXT_SA; } - g_Briefing.objectivenames[0] = L_MISC(42); // "No briefing for this mission" + g_Briefing.briefingtextnum = L_MISC(42); // "No briefing for this mission" - while (thing) { - if (thing->unk04 == 1) { - g_Briefing.objectivenames[0] = thing->name; + while (briefing) { + if (briefing->type == BRIEFINGTYPE_TEXT_PA) { + g_Briefing.briefingtextnum = briefing->text; } - if (thing->unk04 == iVar3) { - g_Briefing.objectivenames[0] = thing->name; + if (briefing->type == wanttype) { + g_Briefing.briefingtextnum = briefing->text; break; } - thing = thing->next; + briefing = briefing->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); + g_Briefing.objectivenames[i] = g_Objectives[i]->text; + g_Briefing.objectivedifficulties[i] = objectiveGetDifficultyBits(i); } } } diff --git a/src/game/menu/items.c b/src/game/menu/items.c index 714ca6c73..23e2d4d7b 100644 --- a/src/game/menu/items.c +++ b/src/game/menu/items.c @@ -3894,8 +3894,8 @@ Gfx *menuRenderItemObjectives(Gfx *gdl, struct menurendercontext *context) s32 i; for (i = 0; i < 6; i++) { - if (g_Briefing.objectivenames[i + 1] - && g_Briefing.objectivedifficulties[i + 1] & (1 << getDifficulty())) { + if (g_Briefing.objectivenames[i] + && g_Briefing.objectivedifficulties[i] & (1 << getDifficulty())) { gdl = menuRenderObjective(gdl, context->frame, i, position, context->x, y, context->width, context->height, @@ -6164,7 +6164,7 @@ char *menuItemScrollableGetText(u32 type) case DESCRIPTION_DEVICETIP2: return dtGetTip2(); } - return langGet(g_Briefing.objectivenames[0]); + return langGet(g_Briefing.briefingtextnum); } /** diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 6c781ca82..c5fbb5af3 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -15080,7 +15080,7 @@ u32 var8009d05c = 0; struct objective *g_Objectives[MAX_OBJECTIVES] = {0}; u32 g_ObjectiveStatuses[MAX_OBJECTIVES] = {0}; struct tag *g_TagsLinkedList = NULL; -struct objectivething *var8009d0b4 = NULL; +struct briefingobj *g_BriefingObjs = NULL; struct criteria_roomentered *g_RoomEnteredCriterias = NULL; struct criteria_multiroomentered *g_MultiroomEnteredCriterias = NULL; struct criteria_holograph *g_HolographCriterias = NULL; @@ -15234,7 +15234,6 @@ u32 var8009dfbc = 0; s32 var8009dfc0 = 0; u32 var8009dfc4 = 0; struct briefing g_Briefing = {0}; -u16 var8009dfe0[2] = {0}; u32 var8009dfe4 = 0; struct missionconfig g_MissionConfig = {0}; struct menu g_Menus[4] = {0, 0, 0, 0}; diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index c6e866957..1d1dba1fa 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -579,7 +579,7 @@ extern u8 *g_GeCreditsData; extern struct objective *g_Objectives[MAX_OBJECTIVES]; extern u32 g_ObjectiveStatuses[MAX_OBJECTIVES]; extern struct tag *g_TagsLinkedList; -extern struct objectivething *var8009d0b4; +extern struct briefingobj *g_BriefingObjs; extern struct criteria_roomentered *g_RoomEnteredCriterias; extern struct criteria_multiroomentered *g_MultiroomEnteredCriterias; extern struct criteria_holograph *g_HolographCriterias; @@ -641,7 +641,6 @@ extern char g_CheatMarqueeString[]; extern u32 var8009dfbc; extern s32 var8009dfc0; extern struct briefing g_Briefing; -extern u16 var8009dfe0[2]; extern struct missionconfig g_MissionConfig; extern struct menu g_Menus[4]; extern struct menudata g_MenuData; diff --git a/src/include/types.h b/src/include/types.h index d62ff2b3d..c4f00bdd7 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -1377,6 +1377,7 @@ struct briefingobj { // objtype 0x23 u32 unk00; u32 type; u32 text; + struct briefingobj *next; }; struct padlockeddoorobj { // objtype 0x26 @@ -5126,8 +5127,10 @@ struct objective { // representation of setup file beginobjective macro }; struct briefing { - u16 objectivenames[6]; // index 0 is the briefing, and the rest of objectives - u16 objectivedifficulties[6]; + u16 briefingtextnum; + u16 objectivenames[6]; // index 0 is the briefing, and the rest are objectives + u16 objectivedifficulties[6]; // index 0 is unused + u16 langbank; }; struct criteria_roomentered { @@ -5152,13 +5155,6 @@ struct criteria_holograph { struct criteria_holograph *next; }; -struct objectivething { - u32 unk00; - u32 unk04; - u32 name; - struct objectivething *next; -}; - struct mppreset { u16 name; u32 confignum;