Attempt to decompile setupLoadBriefing

This commit is contained in:
Ryan Dwyer
2022-02-25 22:26:58 +10:00
parent 611e879828
commit 2675036ce9
4 changed files with 88 additions and 4 deletions
+85 -2
View File
@@ -2664,7 +2664,7 @@ void setupHov(struct defaultobj *obj, struct hov *hov)
#if VERSION >= VERSION_PAL_FINAL
GLOBAL_ASM(
glabel func0f00e980
glabel setupLoadBriefing
/* f00e980: 27bdffc8 */ addiu $sp,$sp,-56
/* f00e984: afb5002c */ sw $s5,0x2c($sp)
/* f00e988: afb30024 */ sw $s3,0x24($sp)
@@ -2799,7 +2799,7 @@ glabel func0f00e980
);
#else
GLOBAL_ASM(
glabel func0f00e980
glabel setupLoadBriefing
/* f00e980: 27bdffc8 */ addiu $sp,$sp,-56
/* f00e984: afb5002c */ sw $s5,0x2c($sp)
/* f00e988: afb30024 */ sw $s3,0x24($sp)
@@ -2934,6 +2934,89 @@ glabel func0f00e980
);
#endif
// Mismatch: for loop is handled differently, as is obj->type
//void setupLoadBriefing(s32 stagenum, u8 *buffer, s32 bufferlen, struct briefing *briefing)
//{
// if (stagenum < STAGE_TITLE) {
// s32 stageindex = stageGetIndex(stagenum);
// struct defaultobj *obj;
// s32 setupfilenum;
// s32 setupfilesize;
// struct objective *objective;
// struct briefingobj *briefingobj;
// s32 i;
// u8 *langbuffer;
// s32 langbufferlen;
// struct stagesetup *setup;
//
// if (stageindex < 0) {
// stageindex = 0;
// }
//
// setupfilenum = g_Stages[stageindex].setupfileid;
// g_LoadType = LOADTYPE_LANG;
//
// if (g_Stages[stageindex].setupfileid);
//
// func0f167200(setupfilenum, 0x22, buffer, bufferlen);
//
// setup = (struct stagesetup *)buffer;
// setupfilesize = fileGetSize(setupfilenum);
// langbuffer = &buffer[setupfilesize];
// langbufferlen = bufferlen - setupfilesize;
//
// briefing->langbank = langGetLangBankIndexFromStagenum(stagenum);
//
// langSetBank(briefing->langbank, langbuffer, langbufferlen);
//
// obj = (struct defaultobj *)((u32)setup + (u32)setup->props);
//
// if (obj != NULL) {
// s32 wanttype = BRIEFINGTYPE_TEXT_PA;
//
// if (lvGetDifficulty() == DIFF_A) {
// wanttype = BRIEFINGTYPE_TEXT_A;
// }
//
// if (lvGetDifficulty() == DIFF_SA) {
// wanttype = BRIEFINGTYPE_TEXT_SA;
// }
//
// for (i = 0; i < 6; i++) {
// briefing->objectivenames[i] = 0;
// }
//
// briefing->briefingtextnum = L_MISC_042; // "No briefing for this mission"
//
// while (obj->type != OBJTYPE_END) {
// switch (obj->type) {
// case OBJTYPE_BRIEFING:
// briefingobj = (struct briefingobj *)obj;
//
// if (briefingobj->type == BRIEFINGTYPE_TEXT_PA) {
// briefing->briefingtextnum = briefingobj->text;
// }
//
// if (briefingobj->type == wanttype) {
// briefing->briefingtextnum = briefingobj->text;
// }
// break;
// case OBJTYPE_BEGINOBJECTIVE:
// objective = (struct objective *)obj;
//
// if (objective->index < 7U) {
// briefing->objectivenames[objective->index] = objective->text;
// briefing->objectivedifficulties[objective->index] = objective->difficulties;
// }
// break;
// }
//
// obj = (struct defaultobj *)((u32 *)obj + setupGetCommandLength((u32 *)obj));
// }
// }
// }
//}
void setupLoadFiles(s32 stagenum)
{
s32 i;
+1 -1
View File
@@ -800,7 +800,7 @@ s32 menudialog00103608(s32 operation, struct menudialogdef *dialogdef, union han
case MENUOP_OPEN:
g_Menus[g_MpPlayerNum].unk840.unk010 = 0;
func0f00e980(g_MissionConfig.stagenum,
setupLoadBriefing(g_MissionConfig.stagenum,
g_Menus[g_MpPlayerNum].unk840.unk004,
g_Menus[g_MpPlayerNum].unk840.unk008, &g_Briefing);
break;
+1
View File
@@ -1337,6 +1337,7 @@
#define LOADTYPE_NONE 0
#define LOADTYPE_BG 1
#define LOADTYPE_TILES 2
#define LOADTYPE_LANG 3
#define LOADTYPE_SETUP 4
#define LOADTYPE_PADS 5
#define LOADTYPE_MODEL 6
+1 -1
View File
@@ -27,7 +27,7 @@ s32 func0f00e1f8(s32 padnum);
s32 func0f00e2b0(s32 padnum);
void setupDoor(struct doorobj *door, s32 cmdindex);
void setupHov(struct defaultobj *obj, struct hov *hov);
void func0f00e980(s32 stagenum, u8 *arg0, s32 arg1, struct briefing *briefing);
void setupLoadBriefing(s32 stagenum, u8 *buffer, s32 bufferlen, struct briefing *briefing);
void setupLoadFiles(s32 stagenum);
void setupParseObjects(s32 stagenum);