From 3931011249211dabd33eb5361bd1ac99e98ea828 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 4 Nov 2022 22:07:02 +1000 Subject: [PATCH] Remove objectives --- ld/gamefiles.ntsc-final.inc | 3 - src/game/bondbike.c | 3 - src/game/bondgrab.c | 2 - src/game/bondgun.c | 1 - src/game/bondwalk.c | 2 - src/game/chr.c | 16 - src/game/chraction.c | 18 - src/game/game_096360.c | 1 - src/game/lv.c | 4 - src/game/mainmenu.c | 83 ---- src/game/menu.c | 34 -- src/game/menuitem.c | 849 ------------------------------------ src/game/nbomb.c | 240 ---------- src/game/objectives.c | 522 ---------------------- src/game/objectivesreset.c | 71 --- src/game/objectivesstop.c | 18 - src/game/player.c | 13 - src/game/portal.c | 1 - src/game/prop.c | 8 - src/game/propobj.c | 42 +- src/game/proptick.c | 1 - src/game/setup.c | 55 --- src/lib/main.c | 3 - 23 files changed, 1 insertion(+), 1989 deletions(-) delete mode 100644 src/game/objectives.c delete mode 100644 src/game/objectivesreset.c delete mode 100644 src/game/objectivesstop.c diff --git a/ld/gamefiles.ntsc-final.inc b/ld/gamefiles.ntsc-final.inc index 3dd7c9939..2c7dbea68 100644 --- a/ld/gamefiles.ntsc-final.inc +++ b/ld/gamefiles.ntsc-final.inc @@ -30,7 +30,6 @@ build/ROMID/game/varsreset.o (section); \ build/ROMID/game/setup.o (section); \ build/ROMID/game/propsndreset.o (section); \ - build/ROMID/game/objectivesreset.o (section); \ build/ROMID/game/casingreset.o (section); \ build/ROMID/game/bondgunreset.o (section); \ build/ROMID/game/modelmgrreset.o (section); \ @@ -59,7 +58,6 @@ build/ROMID/game/propsstop.o (section); \ build/ROMID/game/propobjstop.o (section); \ build/ROMID/game/propsndstop.o (section); \ - build/ROMID/game/objectivesstop.o (section); \ build/ROMID/game/stubs/game_015260.o (section); \ build/ROMID/game/stubs/game_015270.o (section); \ build/ROMID/game/explosionsstop.o (section); \ @@ -92,7 +90,6 @@ build/ROMID/game/propobjbss.o (section); \ build/ROMID/game/setuputils.o (section); \ build/ROMID/game/propsnd.o (section); \ - build/ROMID/game/objectives.o (section); \ build/ROMID/game/game_096360.o (section); \ build/ROMID/game/game_096700.o (section); \ build/ROMID/game/atan2f.o (section); \ diff --git a/src/game/bondbike.c b/src/game/bondbike.c index f46c58956..c65d325cc 100644 --- a/src/game/bondbike.c +++ b/src/game/bondbike.c @@ -7,14 +7,12 @@ #include "game/prop.h" #include "game/setuputils.h" #include "game/propsnd.h" -#include "game/objectives.h" #include "game/quaternion.h" #include "game/bondgun.h" #include "game/tex.h" #include "game/player.h" #include "game/bondhead.h" #include "game/lv.h" -#include "game/objectives.h" #include "game/options.h" #include "game/propobj.h" #include "bss.h" @@ -1017,6 +1015,5 @@ void bbikeTick(void) bgunSetAdjustPos(g_Vars.currentplayer->vv_verta360 * 0.017450513318181f); playerUpdatePerimInfo(); bmoveUpdateRooms(g_Vars.currentplayer); - objectiveCheckRoomEntered(g_Vars.currentplayer->prop->rooms[0]); doorsCheckAutomatic(); } diff --git a/src/game/bondgrab.c b/src/game/bondgrab.c index f88618d36..3ff76a790 100644 --- a/src/game/bondgrab.c +++ b/src/game/bondgrab.c @@ -4,7 +4,6 @@ #include "game/bondmove.h" #include "game/chraction.h" #include "game/prop.h" -#include "game/objectives.h" #include "game/bondgun.h" #include "game/player.h" #include "game/bondhead.h" @@ -1185,7 +1184,6 @@ void bgrabTick(void) } bmoveUpdateRooms(g_Vars.currentplayer); - objectiveCheckRoomEntered(g_Vars.currentplayer->prop->rooms[0]); bmove0f0cc19c(&g_Vars.currentplayer->prop->pos); playerUpdatePerimInfo(); doorsCheckAutomatic(); diff --git a/src/game/bondgun.c b/src/game/bondgun.c index 4a0e8a266..1f421b057 100644 --- a/src/game/bondgun.c +++ b/src/game/bondgun.c @@ -36,7 +36,6 @@ #include "game/pak.h" #include "game/options.h" #include "game/propobj.h" -#include "game/objectives.h" #include "bss.h" #include "lib/collision.h" #include "lib/vi.h" diff --git a/src/game/bondwalk.c b/src/game/bondwalk.c index 498c44776..af7e12254 100644 --- a/src/game/bondwalk.c +++ b/src/game/bondwalk.c @@ -8,7 +8,6 @@ #include "game/chr.h" #include "game/prop.h" #include "game/propsnd.h" -#include "game/objectives.h" #include "game/bondgun.h" #include "game/player.h" #include "game/inv.h" @@ -1724,7 +1723,6 @@ void bwalkTick(void) #endif bmoveUpdateRooms(g_Vars.currentplayer); - objectiveCheckRoomEntered(g_Vars.currentplayer->prop->rooms[0]); if (g_Vars.currentplayer->walkinitmove) { struct coord coord; diff --git a/src/game/chr.c b/src/game/chr.c index dc72998a4..86740defc 100644 --- a/src/game/chr.c +++ b/src/game/chr.c @@ -7,7 +7,6 @@ #include "game/env.h" #include "game/prop.h" #include "game/propsnd.h" -#include "game/objectives.h" #include "game/game_096360.h" #include "game/bondgun.h" #include "game/gunfx.h" @@ -226,15 +225,6 @@ void chrCalculatePushPos(struct chrdata *chr, struct coord *dstpos, s16 *dstroom halfradius = radius * 0.5f; chrSetPerimEnabled(chr, false); - // myspecial is the chr's chair - if (chr->myspecial != -1) { - chair = objFindByTagId(chr->myspecial); - - if (chair && chair->prop) { - objSetPerimEnabled(chair->prop, false); - } - } - func0f065dfc(&prop->pos, prop->rooms, dstpos, dstrooms, sp84, 20); #if VERSION < VERSION_NTSC_1_0 @@ -1315,7 +1305,6 @@ void chrRemove(struct prop *prop, bool delete) { struct chrdata *chr = prop->chr; struct model *model = chr->model; - struct defaultobj *eyespyobj = NULL; struct prop *child; u32 stack[2]; @@ -1334,10 +1323,6 @@ void chrRemove(struct prop *prop, bool delete) modelFreeVertices(VTXSTORETYPE_CHRVTX, model); propDeregisterRooms(prop); - if (g_Vars.stagenum == STAGE_CITRAINING) { - eyespyobj = objFindByTagId(0x26); - } - child = prop->child; while (child) { @@ -1345,7 +1330,6 @@ void chrRemove(struct prop *prop, bool delete) struct prop *next = child->next; if ((obj->hidden & OBJHFLAG_HASTEXTOVERRIDE) == 0 - && obj != eyespyobj && (prop->type != PROPTYPE_PLAYER || (obj->flags3 & OBJFLAG3_PLAYERUNDROPPABLE) == 0)) { objDetach(child); objFreePermanently(obj, true); diff --git a/src/game/chraction.c b/src/game/chraction.c index 1a52f4992..72666e386 100644 --- a/src/game/chraction.c +++ b/src/game/chraction.c @@ -9,7 +9,6 @@ #include "game/body.h" #include "game/prop.h" #include "game/propsnd.h" -#include "game/objectives.h" #include "game/atan2f.h" #include "game/acosfasinf.h" #include "game/bondgun.h" @@ -3181,23 +3180,6 @@ void chrBeginDeath(struct chrdata *chr, struct coord *dir, f32 relangle, s32 hit row = &g_AnimTablesByRace[race][index].deathanims[tmp]; } else if (chr->specialdie == SPECIALDIE_ONCHAIR) { row = &g_SpecialDieAnims[chr->specialdie + random() % 2]; - - // chr->myspecial is the tag number of the chr's chair - if (chr->myspecial >= 0) { - struct defaultobj *obj = objFindByTagId(chr->myspecial); - obj->flags3 &= ~OBJFLAG3_PUSHABLE; - obj->flags |= OBJFLAG_INVINCIBLE; - - // The original source likely didn't have the brackets here, - // but I'm including them to show the logic that's actually - // being used. There is no bug here, as obj and obj->prop - // are always set at this point so these checks are - // unnecessary. - if ((obj && obj->prop && obj->modelnum == MODEL_DD_REDARM) - || obj->modelnum == MODEL_DD_REDSOFA) { - row = &g_SpecialDieAnims[chr->specialdie - 1]; - } - } } else { row = &g_SpecialDieAnims[chr->specialdie - 1]; } diff --git a/src/game/game_096360.c b/src/game/game_096360.c index 1c3e4e5a8..28c0fd735 100644 --- a/src/game/game_096360.c +++ b/src/game/game_096360.c @@ -1,6 +1,5 @@ #include #include "constants.h" -#include "game/objectives.h" #include "game/game_096360.h" #include "game/tex.h" #include "game/propobj.h" diff --git a/src/game/lv.c b/src/game/lv.c index 148acd204..d51ccf5ec 100644 --- a/src/game/lv.c +++ b/src/game/lv.c @@ -43,7 +43,6 @@ #include "game/mplayer/setup.h" #include "game/music.h" #include "game/nbomb.h" -#include "game/objectives.h" #include "game/pak.h" #include "game/pdmode.h" #include "game/player.h" @@ -357,7 +356,6 @@ void lvReset(s32 stagenum) mpSetDefaultNamesIfEmpty(); animsReset(); - objectivesReset(); vtxstoreReset(); modelmgrReset(); propsndReset(); @@ -368,7 +366,6 @@ void lvReset(s32 stagenum) chrmgrReset(); bodiesReset(stagenum); setupCreateProps(stagenum); - tagsReset(); explosionsReset(); smokeReset(); sparksReset(); @@ -2189,7 +2186,6 @@ void lvStop(void) propsStop(); objsStop(); weatherStop(); - objectivesStop(); stub0f015260(); bgunStop(); propsndStop(); diff --git a/src/game/mainmenu.c b/src/game/mainmenu.c index d0e7e514e..0fbc7a3c6 100644 --- a/src/game/mainmenu.c +++ b/src/game/mainmenu.c @@ -4,7 +4,6 @@ #include "game/setup.h" #include "game/title.h" #include "game/pdmode.h" -#include "game/objectives.h" #include "game/bondgun.h" #include "game/game_0b0fd0.h" #include "game/tex.h" @@ -2660,85 +2659,3 @@ struct menudialogdef g_2PMissionAbortVMenuDialog = { 0, NULL, }; - -s32 soloMenuDialogPauseStatus(s32 operation, struct menudialogdef *dialogdef, union handlerdata *data) -{ - if (operation == MENUOP_OPEN) { - struct briefingobj *briefing = g_BriefingObjs; - struct objective *objective; - s32 wanttype = BRIEFINGTYPE_TEXT_PA; - s32 i; - - if (lvGetDifficulty() == DIFF_A) { - wanttype = BRIEFINGTYPE_TEXT_A; - } - - if (lvGetDifficulty() == DIFF_SA) { - wanttype = BRIEFINGTYPE_TEXT_SA; - } - - g_Briefing.briefingtextnum = L_MISC_042; // "No briefing for this mission" - - while (briefing) { - if (briefing->type == BRIEFINGTYPE_TEXT_PA) { - g_Briefing.briefingtextnum = briefing->text; - } - - if (briefing->type == wanttype) { - g_Briefing.briefingtextnum = briefing->text; - break; - } - - briefing = briefing->next; - } - - for (i = 0; i < objectiveGetCount(); i++) { - if (g_Objectives[i]) { - g_Briefing.objectivenames[i] = g_Objectives[i]->text; - g_Briefing.objectivedifficulties[i] = objectiveGetDifficultyBits(i); - } - } - } - - return 0; -} - -struct menuitem g_2PMissionPauseVMenuItems[] = { - { - MENUITEMTYPE_OBJECTIVES, - 2, - 0, - 0, - 0, - NULL, - }, - { - MENUITEMTYPE_SELECTABLE, - 0, - MENUITEMFLAG_SELECTABLE_OPENSDIALOG, - L_OPTIONS_173, // "Abort!" - 0, - (void *)&g_2PMissionAbortVMenuDialog, - }, - { MENUITEMTYPE_END }, -}; - -struct menuitem g_MissionPauseMenuItems[] = { - { - MENUITEMTYPE_OBJECTIVES, - 0, - 0, - 0, - 0, - NULL, - }, - { - MENUITEMTYPE_SELECTABLE, - 0, - MENUITEMFLAG_SELECTABLE_OPENSDIALOG, - L_OPTIONS_173, // "Abort!" - 0, - (void *)&g_MissionAbortMenuDialog, - }, - { MENUITEMTYPE_END }, -}; diff --git a/src/game/menu.c b/src/game/menu.c index 95b5c0949..3e3e03824 100644 --- a/src/game/menu.c +++ b/src/game/menu.c @@ -3,7 +3,6 @@ #include "game/camdraw.h" #include "game/game_006900.h" #include "game/body.h" -#include "game/objectives.h" #include "game/quaternion.h" #include "game/bondgun.h" #include "game/tex.h" @@ -8670,39 +8669,6 @@ u32 menuChooseMusic(void) { s32 missionsuccess = MUSIC_MISSION_SUCCESS; - if (g_StageIndex == STAGEINDEX_DEFENSE) { - missionsuccess = MUSIC_MISSION_UNKNOWN; - } - - if (g_MenuData.root == MENUROOT_ENDSCREEN) { - if (g_Vars.bond->isdead || g_Vars.bond->aborted || !objectiveIsAllComplete()) { - return MUSIC_MISSION_FAILED; - } - - return missionsuccess; - } - - if (g_MenuData.root == MENUROOT_MPENDSCREEN) { - if (g_Vars.coopplayernum >= 0) { - if ((g_Vars.bond->isdead && g_Vars.coop->isdead) - || g_Vars.bond->aborted - || g_Vars.coop->aborted - || !objectiveIsAllComplete()) { - return MUSIC_MISSION_FAILED; - } - - return missionsuccess; - } - - if (g_Vars.antiplayernum >= 0) { - if (g_Vars.bond->isdead || g_Vars.bond->aborted || !objectiveIsAllComplete()) { - return MUSIC_MISSION_FAILED; - } - - return missionsuccess; - } - } - if (g_MenuData.root == MENUROOT_FILEMGR) { return MUSIC_MAINMENU; } diff --git a/src/game/menuitem.c b/src/game/menuitem.c index 3cbd827e4..9349c624f 100644 --- a/src/game/menuitem.c +++ b/src/game/menuitem.c @@ -2,13 +2,11 @@ #include "constants.h" #include "game/camdraw.h" #include "game/game_006900.h" -#include "game/objectives.h" #include "game/tex.h" #include "game/menugfx.h" #include "game/menuitem.h" #include "game/menu.h" #include "game/mainmenu.h" -#include "game/objectives.h" #include "game/game_1531a0.h" #include "game/lv.h" #include "game/challenge.h" @@ -1594,852 +1592,6 @@ Gfx *menuitemSeparatorRender(Gfx *gdl, struct menurendercontext *context) u32 var800711e8 = 0x00000000; -#if VERSION >= VERSION_JPN_FINAL -GLOBAL_ASM( -glabel menuitemObjectivesRenderOne -/* f0ea654: 27bdfed0 */ addiu $sp,$sp,-304 -/* f0ea658: 8fae0154 */ lw $t6,0x154($sp) -/* f0ea65c: afbf003c */ sw $ra,0x3c($sp) -/* f0ea660: afb00038 */ sw $s0,0x38($sp) -/* f0ea664: afa40130 */ sw $a0,0x130($sp) -/* f0ea668: afa50134 */ sw $a1,0x134($sp) -/* f0ea66c: afa60138 */ sw $a2,0x138($sp) -/* f0ea670: afa7013c */ sw $a3,0x13c($sp) -/* f0ea674: 11c00002 */ beqz $t6,.JF0f0ea680 -/* f0ea678: 00001025 */ move $v0,$zero -/* f0ea67c: 2402000e */ li $v0,0xe -.JF0f0ea680: -/* f0ea680: 3c047f1b */ lui $a0,0x7f1b -/* f0ea684: 3c058007 */ lui $a1,0x8007 -/* f0ea688: 24a51728 */ addiu $a1,$a1,0x1728 -/* f0ea68c: 2484ecd0 */ addiu $a0,$a0,-4912 -/* f0ea690: 0c0036b4 */ jal mainOverrideVariable -/* f0ea694: afa200bc */ sw $v0,0xbc($sp) -/* f0ea698: 8faf0138 */ lw $t7,0x138($sp) -/* f0ea69c: 3c04800a */ lui $a0,0x800a -/* f0ea6a0: 000fc040 */ sll $t8,$t7,0x1 -/* f0ea6a4: 00982021 */ addu $a0,$a0,$t8 -/* f0ea6a8: 0fc5baa5 */ jal langGet -/* f0ea6ac: 9484e6ca */ lhu $a0,-0x1936($a0) -/* f0ea6b0: 87b90146 */ lh $t9,0x146($sp) -/* f0ea6b4: 8fa30134 */ lw $v1,0x134($sp) -/* f0ea6b8: afa20120 */ sw $v0,0x120($sp) -/* f0ea6bc: afb90124 */ sw $t9,0x124($sp) -/* f0ea6c0: 44803000 */ mtc1 $zero,$f6 -/* f0ea6c4: c4640040 */ lwc1 $f4,0x40($v1) -/* f0ea6c8: 4606203c */ c.lt.s $f4,$f6 -/* f0ea6cc: 00000000 */ nop -/* f0ea6d0: 4502000b */ bc1fl .JF0f0ea700 -/* f0ea6d4: 906c003d */ lbu $t4,0x3d($v1) -/* f0ea6d8: 9069003c */ lbu $t1,0x3c($v1) -/* f0ea6dc: 2410003c */ li $s0,0x3c -/* f0ea6e0: 3c0b7f1b */ lui $t3,0x7f1b -/* f0ea6e4: 01300019 */ multu $t1,$s0 -/* f0ea6e8: 00005012 */ mflo $t2 -/* f0ea6ec: 016a5821 */ addu $t3,$t3,$t2 -/* f0ea6f0: 8d6b2cf8 */ lw $t3,0x2cf8($t3) -/* f0ea6f4: 10000012 */ b .JF0f0ea740 -/* f0ea6f8: afab012c */ sw $t3,0x12c($sp) -/* f0ea6fc: 906c003d */ lbu $t4,0x3d($v1) -.JF0f0ea700: -/* f0ea700: 2410003c */ li $s0,0x3c -/* f0ea704: 9078003c */ lbu $t8,0x3c($v1) -/* f0ea708: 01900019 */ multu $t4,$s0 -/* f0ea70c: 3c0e7f1b */ lui $t6,0x7f1b -/* f0ea710: 25ce2ce0 */ addiu $t6,$t6,0x2ce0 -/* f0ea714: 8c660044 */ lw $a2,0x44($v1) -/* f0ea718: 00006812 */ mflo $t5 -/* f0ea71c: 01ae7821 */ addu $t7,$t5,$t6 -/* f0ea720: 8de40018 */ lw $a0,0x18($t7) -/* f0ea724: 03100019 */ multu $t8,$s0 -/* f0ea728: 0000c812 */ mflo $t9 -/* f0ea72c: 032e4821 */ addu $t1,$t9,$t6 -/* f0ea730: 0fc01a60 */ jal colourBlend -/* f0ea734: 8d250018 */ lw $a1,0x18($t1) -/* f0ea738: afa2012c */ sw $v0,0x12c($sp) -/* f0ea73c: 8fa30134 */ lw $v1,0x134($sp) -.JF0f0ea740: -/* f0ea740: 8c6a000c */ lw $t2,0xc($v1) -/* f0ea744: 8fa4012c */ lw $a0,0x12c($sp) -/* f0ea748: 00002825 */ move $a1,$zero -/* f0ea74c: 5140000b */ beqzl $t2,.JF0f0ea77c -/* f0ea750: 9078003c */ lbu $t8,0x3c($v1) -/* f0ea754: 0fc01a60 */ jal colourBlend -/* f0ea758: 2406002c */ li $a2,0x2c -/* f0ea75c: 8fac012c */ lw $t4,0x12c($sp) -/* f0ea760: 2401ff00 */ li $at,-256 -/* f0ea764: 00415824 */ and $t3,$v0,$at -/* f0ea768: 318d00ff */ andi $t5,$t4,0xff -/* f0ea76c: 016d7825 */ or $t7,$t3,$t5 -/* f0ea770: afaf012c */ sw $t7,0x12c($sp) -/* f0ea774: 8fa30134 */ lw $v1,0x134($sp) -/* f0ea778: 9078003c */ lbu $t8,0x3c($v1) -.JF0f0ea77c: -/* f0ea77c: 3c047f1b */ lui $a0,0x7f1b -/* f0ea780: 3c057f1b */ lui $a1,0x7f1b -/* f0ea784: 03100019 */ multu $t8,$s0 -/* f0ea788: 00001012 */ mflo $v0 -/* f0ea78c: 00822021 */ addu $a0,$a0,$v0 -/* f0ea790: 00a22821 */ addu $a1,$a1,$v0 -/* f0ea794: 8ca52e60 */ lw $a1,0x2e60($a1) -/* f0ea798: 0fc54d69 */ jal textSetWaveColours -/* f0ea79c: 8c842fc8 */ lw $a0,0x2fc8($a0) -/* f0ea7a0: a3a000d0 */ sb $zero,0xd0($sp) -/* f0ea7a4: 0fc54b55 */ jal text0f153628 -/* f0ea7a8: 8fa40130 */ lw $a0,0x130($sp) -/* f0ea7ac: 27b000d0 */ addiu $s0,$sp,0xd0 -/* f0ea7b0: 3c057f1b */ lui $a1,0x7f1b -/* f0ea7b4: afa20130 */ sw $v0,0x130($sp) -/* f0ea7b8: 24a5ecd8 */ addiu $a1,$a1,-4904 -/* f0ea7bc: 02002025 */ move $a0,$s0 -/* f0ea7c0: 0c004d95 */ jal sprintf -/* f0ea7c4: 8fa6013c */ lw $a2,0x13c($sp) -/* f0ea7c8: 3c198008 */ lui $t9,0x8008 -/* f0ea7cc: 8f390148 */ lw $t9,0x148($t9) -/* f0ea7d0: 3c078008 */ lui $a3,0x8008 -/* f0ea7d4: 8ce7014c */ lw $a3,0x14c($a3) -/* f0ea7d8: 27a400c0 */ addiu $a0,$sp,0xc0 -/* f0ea7dc: 27a500c4 */ addiu $a1,$sp,0xc4 -/* f0ea7e0: 02003025 */ move $a2,$s0 -/* f0ea7e4: afa00014 */ sw $zero,0x14($sp) -/* f0ea7e8: 0fc55d49 */ jal textMeasure -/* f0ea7ec: afb90010 */ sw $t9,0x10($sp) -/* f0ea7f0: 87ae0142 */ lh $t6,0x142($sp) -/* f0ea7f4: 8fa900c4 */ lw $t1,0xc4($sp) -/* f0ea7f8: 3c0b8008 */ lui $t3,0x8008 -/* f0ea7fc: 3c0d8008 */ lui $t5,0x8008 -/* f0ea800: 8dad0148 */ lw $t5,0x148($t5) -/* f0ea804: 8d6b014c */ lw $t3,0x14c($t3) -/* f0ea808: 8faf012c */ lw $t7,0x12c($sp) -/* f0ea80c: 87b8014a */ lh $t8,0x14a($sp) -/* f0ea810: 87b9014e */ lh $t9,0x14e($sp) -/* f0ea814: 01c95023 */ subu $t2,$t6,$t1 -/* f0ea818: 254c0019 */ addiu $t4,$t2,0x19 -/* f0ea81c: afac0128 */ sw $t4,0x128($sp) -/* f0ea820: 8fa40130 */ lw $a0,0x130($sp) -/* f0ea824: 27a50128 */ addiu $a1,$sp,0x128 -/* f0ea828: 27a60124 */ addiu $a2,$sp,0x124 -/* f0ea82c: 02003825 */ move $a3,$s0 -/* f0ea830: afa00024 */ sw $zero,0x24($sp) -/* f0ea834: afa00028 */ sw $zero,0x28($sp) -/* f0ea838: afad0014 */ sw $t5,0x14($sp) -/* f0ea83c: afab0010 */ sw $t3,0x10($sp) -/* f0ea840: afaf0018 */ sw $t7,0x18($sp) -/* f0ea844: afb8001c */ sw $t8,0x1c($sp) -/* f0ea848: 0fc55886 */ jal textRenderProjected -/* f0ea84c: afb90020 */ sw $t9,0x20($sp) -/* f0ea850: 87ae0142 */ lh $t6,0x142($sp) -/* f0ea854: 8faa0154 */ lw $t2,0x154($sp) -/* f0ea858: afa20130 */ sw $v0,0x130($sp) -/* f0ea85c: 25c90019 */ addiu $t1,$t6,0x19 -/* f0ea860: 1140001f */ beqz $t2,.JF0f0ea8e0 -/* f0ea864: afa90128 */ sw $t1,0x128($sp) -/* f0ea868: 3c0c8008 */ lui $t4,0x8008 -/* f0ea86c: 8d8c0140 */ lw $t4,0x140($t4) -/* f0ea870: 3c078008 */ lui $a3,0x8008 -/* f0ea874: 8ce70144 */ lw $a3,0x144($a3) -/* f0ea878: 24040055 */ li $a0,0x55 -/* f0ea87c: 8fa50120 */ lw $a1,0x120($sp) -/* f0ea880: 02003025 */ move $a2,$s0 -/* f0ea884: 0fc55dde */ jal textWrap -/* f0ea888: afac0010 */ sw $t4,0x10($sp) -/* f0ea88c: 3c0b8008 */ lui $t3,0x8008 -/* f0ea890: 3c0d8008 */ lui $t5,0x8008 -/* f0ea894: 8dad0140 */ lw $t5,0x140($t5) -/* f0ea898: 8d6b0144 */ lw $t3,0x144($t3) -/* f0ea89c: 8faf012c */ lw $t7,0x12c($sp) -/* f0ea8a0: 87b8014a */ lh $t8,0x14a($sp) -/* f0ea8a4: 87b9014e */ lh $t9,0x14e($sp) -/* f0ea8a8: 8fa40130 */ lw $a0,0x130($sp) -/* f0ea8ac: 27a50128 */ addiu $a1,$sp,0x128 -/* f0ea8b0: 27a60124 */ addiu $a2,$sp,0x124 -/* f0ea8b4: 02003825 */ move $a3,$s0 -/* f0ea8b8: afa00024 */ sw $zero,0x24($sp) -/* f0ea8bc: afa00028 */ sw $zero,0x28($sp) -/* f0ea8c0: afad0014 */ sw $t5,0x14($sp) -/* f0ea8c4: afab0010 */ sw $t3,0x10($sp) -/* f0ea8c8: afaf0018 */ sw $t7,0x18($sp) -/* f0ea8cc: afb8001c */ sw $t8,0x1c($sp) -/* f0ea8d0: 0fc55886 */ jal textRenderProjected -/* f0ea8d4: afb90020 */ sw $t9,0x20($sp) -/* f0ea8d8: 1000001a */ b .JF0f0ea944 -/* f0ea8dc: afa20130 */ sw $v0,0x130($sp) -.JF0f0ea8e0: -/* f0ea8e0: 3c057f1b */ lui $a1,0x7f1b -/* f0ea8e4: 24a5ece0 */ addiu $a1,$a1,-4896 -/* f0ea8e8: 02002025 */ move $a0,$s0 -/* f0ea8ec: 0c004d95 */ jal sprintf -/* f0ea8f0: 8fa60120 */ lw $a2,0x120($sp) -/* f0ea8f4: 3c0e8008 */ lui $t6,0x8008 -/* f0ea8f8: 3c098008 */ lui $t1,0x8008 -/* f0ea8fc: 8d290148 */ lw $t1,0x148($t1) -/* f0ea900: 8dce014c */ lw $t6,0x14c($t6) -/* f0ea904: 8faa012c */ lw $t2,0x12c($sp) -/* f0ea908: 87ac014a */ lh $t4,0x14a($sp) -/* f0ea90c: 87ab014e */ lh $t3,0x14e($sp) -/* f0ea910: 8fa40130 */ lw $a0,0x130($sp) -/* f0ea914: 27a50128 */ addiu $a1,$sp,0x128 -/* f0ea918: 27a60124 */ addiu $a2,$sp,0x124 -/* f0ea91c: 02003825 */ move $a3,$s0 -/* f0ea920: afa00024 */ sw $zero,0x24($sp) -/* f0ea924: afa00028 */ sw $zero,0x28($sp) -/* f0ea928: afa90014 */ sw $t1,0x14($sp) -/* f0ea92c: afae0010 */ sw $t6,0x10($sp) -/* f0ea930: afaa0018 */ sw $t2,0x18($sp) -/* f0ea934: afac001c */ sw $t4,0x1c($sp) -/* f0ea938: 0fc55886 */ jal textRenderProjected -/* f0ea93c: afab0020 */ sw $t3,0x20($sp) -/* f0ea940: afa20130 */ sw $v0,0x130($sp) -.JF0f0ea944: -/* f0ea944: 8fad0150 */ lw $t5,0x150($sp) -/* f0ea948: 87ae0142 */ lh $t6,0x142($sp) -/* f0ea94c: 8fa80124 */ lw $t0,0x124($sp) -/* f0ea950: 11a00126 */ beqz $t5,.JF0f0eadec -/* f0ea954: 25cc0016 */ addiu $t4,$t6,0x16 -/* f0ea958: 0fc25901 */ jal objectiveCheck -/* f0ea95c: 8fa40138 */ lw $a0,0x138($sp) -/* f0ea960: 10400007 */ beqz $v0,.JF0f0ea980 -/* f0ea964: 24010001 */ li $at,0x1 -/* f0ea968: 1041000c */ beq $v0,$at,.JF0f0ea99c -/* f0ea96c: 24010002 */ li $at,0x2 -/* f0ea970: 10410011 */ beq $v0,$at,.JF0f0ea9b8 -/* f0ea974: 00000000 */ nop -/* f0ea978: 10000015 */ b .JF0f0ea9d0 -/* f0ea97c: 00000000 */ nop -.JF0f0ea980: -/* f0ea980: 0fc5baa5 */ jal langGet -/* f0ea984: 24045601 */ li $a0,0x5601 -/* f0ea988: 3c0fffff */ lui $t7,0xffff -/* f0ea98c: 35ef00ff */ ori $t7,$t7,0xff -/* f0ea990: afa200cc */ sw $v0,0xcc($sp) -/* f0ea994: 1000000e */ b .JF0f0ea9d0 -/* f0ea998: afaf00c8 */ sw $t7,0xc8($sp) -.JF0f0ea99c: -/* f0ea99c: 0fc5baa5 */ jal langGet -/* f0ea9a0: 24045600 */ li $a0,0x5600 -/* f0ea9a4: 3c1800ff */ lui $t8,0xff -/* f0ea9a8: 371800ff */ ori $t8,$t8,0xff -/* f0ea9ac: afa200cc */ sw $v0,0xcc($sp) -/* f0ea9b0: 10000007 */ b .JF0f0ea9d0 -/* f0ea9b4: afb800c8 */ sw $t8,0xc8($sp) -.JF0f0ea9b8: -/* f0ea9b8: 0fc5baa5 */ jal langGet -/* f0ea9bc: 24045602 */ li $a0,0x5602 -/* f0ea9c0: 3c19ff40 */ lui $t9,0xff40 -/* f0ea9c4: 373940ff */ ori $t9,$t9,0x40ff -/* f0ea9c8: afa200cc */ sw $v0,0xcc($sp) -/* f0ea9cc: afb900c8 */ sw $t9,0xc8($sp) -.JF0f0ea9d0: -/* f0ea9d0: 3c098007 */ lui $t1,0x8007 -/* f0ea9d4: 8d291998 */ lw $t1,0x1998($t1) -/* f0ea9d8: 3c0c800a */ lui $t4,0x800a -/* f0ea9dc: 8fae0134 */ lw $t6,0x134($sp) -/* f0ea9e0: 000950c0 */ sll $t2,$t1,0x3 -/* f0ea9e4: 01495023 */ subu $t2,$t2,$t1 -/* f0ea9e8: 000a5080 */ sll $t2,$t2,0x2 -/* f0ea9ec: 01495021 */ addu $t2,$t2,$t1 -/* f0ea9f0: 000a50c0 */ sll $t2,$t2,0x3 -/* f0ea9f4: 01495023 */ subu $t2,$t2,$t1 -/* f0ea9f8: 000a5100 */ sll $t2,$t2,0x4 -/* f0ea9fc: 018a6021 */ addu $t4,$t4,$t2 -/* f0eaa00: 8d8cebf8 */ lw $t4,-0x1408($t4) -/* f0eaa04: 27a400c0 */ addiu $a0,$sp,0xc0 -/* f0eaa08: 27a500c4 */ addiu $a1,$sp,0xc4 -/* f0eaa0c: 11cc0004 */ beq $t6,$t4,.JF0f0eaa20 -/* f0eaa10: 3c078008 */ lui $a3,0x8008 -/* f0eaa14: 3c0b7f1b */ lui $t3,0x7f1b -/* f0eaa18: 8d6b2cf8 */ lw $t3,0x2cf8($t3) -/* f0eaa1c: afab00c8 */ sw $t3,0xc8($sp) -.JF0f0eaa20: -/* f0eaa20: 3c0d8008 */ lui $t5,0x8008 -/* f0eaa24: 8dad0140 */ lw $t5,0x140($t5) -/* f0eaa28: 8fa600cc */ lw $a2,0xcc($sp) -/* f0eaa2c: 8ce70144 */ lw $a3,0x144($a3) -/* f0eaa30: afa00014 */ sw $zero,0x14($sp) -/* f0eaa34: 0fc55d49 */ jal textMeasure -/* f0eaa38: afad0010 */ sw $t5,0x10($sp) -/* f0eaa3c: 3c028007 */ lui $v0,0x8007 -/* f0eaa40: 8c421728 */ lw $v0,0x1728($v0) -/* f0eaa44: 27a50128 */ addiu $a1,$sp,0x128 -/* f0eaa48: 27a60124 */ addiu $a2,$sp,0x124 -/* f0eaa4c: 10400002 */ beqz $v0,.JF0f0eaa58 -/* f0eaa50: 3c0c8008 */ lui $t4,0x8008 -/* f0eaa54: afa200c8 */ sw $v0,0xc8($sp) -.JF0f0eaa58: -/* f0eaa58: 87a2014a */ lh $v0,0x14a($sp) -/* f0eaa5c: 87af0142 */ lh $t7,0x142($sp) -/* f0eaa60: 8fb800c4 */ lw $t8,0xc4($sp) -/* f0eaa64: 87aa0146 */ lh $t2,0x146($sp) -/* f0eaa68: 8fae00bc */ lw $t6,0xbc($sp) -/* f0eaa6c: 01e28021 */ addu $s0,$t7,$v0 -/* f0eaa70: 3c0b8008 */ lui $t3,0x8008 -/* f0eaa74: 8d6b0140 */ lw $t3,0x140($t3) -/* f0eaa78: 87af014e */ lh $t7,0x14e($sp) -/* f0eaa7c: 8d8c0144 */ lw $t4,0x144($t4) -/* f0eaa80: 8fad00c8 */ lw $t5,0xc8($sp) -/* f0eaa84: 0218c823 */ subu $t9,$s0,$t8 -/* f0eaa88: 014e4021 */ addu $t0,$t2,$t6 -/* f0eaa8c: 2729fff6 */ addiu $t1,$t9,-10 -/* f0eaa90: 2508000a */ addiu $t0,$t0,0xa -/* f0eaa94: afa90128 */ sw $t1,0x128($sp) -/* f0eaa98: afa80124 */ sw $t0,0x124($sp) -/* f0eaa9c: 8fa40130 */ lw $a0,0x130($sp) -/* f0eaaa0: 8fa700cc */ lw $a3,0xcc($sp) -/* f0eaaa4: afa00024 */ sw $zero,0x24($sp) -/* f0eaaa8: afa00028 */ sw $zero,0x28($sp) -/* f0eaaac: afa2001c */ sw $v0,0x1c($sp) -/* f0eaab0: afab0014 */ sw $t3,0x14($sp) -/* f0eaab4: afaf0020 */ sw $t7,0x20($sp) -/* f0eaab8: afac0010 */ sw $t4,0x10($sp) -/* f0eaabc: 0fc55886 */ jal textRenderProjected -/* f0eaac0: afad0018 */ sw $t5,0x18($sp) -/* f0eaac4: 8fb800c4 */ lw $t8,0xc4($sp) -/* f0eaac8: 87a80146 */ lh $t0,0x146($sp) -/* f0eaacc: 00402025 */ move $a0,$v0 -/* f0eaad0: 02183023 */ subu $a2,$s0,$t8 -/* f0eaad4: 24c6fff3 */ addiu $a2,$a2,-13 -/* f0eaad8: 25080009 */ addiu $t0,$t0,0x9 -/* f0eaadc: afa80124 */ sw $t0,0x124($sp) -/* f0eaae0: 0fc54bb7 */ jal text0f153780 -/* f0eaae4: afa60128 */ sw $a2,0x128($sp) -/* f0eaae8: 87a50142 */ lh $a1,0x142($sp) -/* f0eaaec: 8fa60128 */ lw $a2,0x128($sp) -/* f0eaaf0: 8fb8013c */ lw $t8,0x13c($sp) -/* f0eaaf4: 00056080 */ sll $t4,$a1,0x2 -/* f0eaaf8: 01856023 */ subu $t4,$t4,$a1 -/* f0eaafc: 01851821 */ addu $v1,$t4,$a1 -/* f0eab00: 24630042 */ addiu $v1,$v1,0x42 -/* f0eab04: 24b90016 */ addiu $t9,$a1,0x16 -/* f0eab08: afb900b4 */ sw $t9,0xb4($sp) -/* f0eab0c: 2719ffff */ addiu $t9,$t8,-1 -/* f0eab10: 87a90146 */ lh $t1,0x146($sp) -/* f0eab14: 8fa80124 */ lw $t0,0x124($sp) -/* f0eab18: 00402025 */ move $a0,$v0 -/* f0eab1c: 252afffe */ addiu $t2,$t1,-2 -/* f0eab20: afaa00b0 */ sw $t2,0xb0($sp) -/* f0eab24: 252e0008 */ addiu $t6,$t1,0x8 -/* f0eab28: afae00ac */ sw $t6,0xac($sp) -/* f0eab2c: afa6009c */ sw $a2,0x9c($sp) -/* f0eab30: 04610003 */ bgez $v1,.JF0f0eab40 -/* f0eab34: 00035883 */ sra $t3,$v1,0x2 -/* f0eab38: 24610003 */ addiu $at,$v1,0x3 -/* f0eab3c: 00015883 */ sra $t3,$at,0x2 -.JF0f0eab40: -/* f0eab40: 00cb6823 */ subu $t5,$a2,$t3 -/* f0eab44: 25afffe8 */ addiu $t7,$t5,-24 -/* f0eab48: 01f90019 */ multu $t7,$t9 -/* f0eab4c: 24010005 */ li $at,0x5 -/* f0eab50: 01601825 */ move $v1,$t3 -/* f0eab54: afa3005c */ sw $v1,0x5c($sp) -/* f0eab58: 00005012 */ mflo $t2 -/* f0eab5c: 00000000 */ nop -/* f0eab60: 00000000 */ nop -/* f0eab64: 0141001a */ div $zero,$t2,$at -/* f0eab68: 00004812 */ mflo $t1 -/* f0eab6c: 01697021 */ addu $t6,$t3,$t1 -/* f0eab70: 8fab00bc */ lw $t3,0xbc($sp) -/* f0eab74: 25cc0013 */ addiu $t4,$t6,0x13 -/* f0eab78: afac0098 */ sw $t4,0x98($sp) -/* f0eab7c: 010b6821 */ addu $t5,$t0,$t3 -/* f0eab80: 25b80005 */ addiu $t8,$t5,0x5 -/* f0eab84: 0fc38c93 */ jal menugfx0f0e2498 -/* f0eab88: afb800a8 */ sw $t8,0xa8($sp) -/* f0eab8c: 8fa3012c */ lw $v1,0x12c($sp) -/* f0eab90: 8fa600b0 */ lw $a2,0xb0($sp) -/* f0eab94: 2401ff00 */ li $at,-256 -/* f0eab98: 0061c824 */ and $t9,$v1,$at -/* f0eab9c: 3730003f */ ori $s0,$t9,0x3f -/* f0eaba0: 24cf0001 */ addiu $t7,$a2,0x1 -/* f0eaba4: afaf0010 */ sw $t7,0x10($sp) -/* f0eaba8: afb00018 */ sw $s0,0x18($sp) -/* f0eabac: 03201825 */ move $v1,$t9 -/* f0eabb0: afb90014 */ sw $t9,0x14($sp) -/* f0eabb4: afb90054 */ sw $t9,0x54($sp) -/* f0eabb8: 00402025 */ move $a0,$v0 -/* f0eabbc: 87a50142 */ lh $a1,0x142($sp) -/* f0eabc0: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eabc4: 8fa700b4 */ lw $a3,0xb4($sp) -/* f0eabc8: 8fa500b4 */ lw $a1,0xb4($sp) -/* f0eabcc: 8faa00ac */ lw $t2,0xac($sp) -/* f0eabd0: 00402025 */ move $a0,$v0 -/* f0eabd4: 24a70001 */ addiu $a3,$a1,0x1 -/* f0eabd8: afa7004c */ sw $a3,0x4c($sp) -/* f0eabdc: 8fa600b0 */ lw $a2,0xb0($sp) -/* f0eabe0: afb00014 */ sw $s0,0x14($sp) -/* f0eabe4: afb00018 */ sw $s0,0x18($sp) -/* f0eabe8: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eabec: afaa0010 */ sw $t2,0x10($sp) -/* f0eabf0: 8fa600ac */ lw $a2,0xac($sp) -/* f0eabf4: 8fa7005c */ lw $a3,0x5c($sp) -/* f0eabf8: 8fa30054 */ lw $v1,0x54($sp) -/* f0eabfc: 24c80001 */ addiu $t0,$a2,0x1 -/* f0eac00: 24e7ffff */ addiu $a3,$a3,-1 -/* f0eac04: afa70058 */ sw $a3,0x58($sp) -/* f0eac08: afa80010 */ sw $t0,0x10($sp) -/* f0eac0c: afa80048 */ sw $t0,0x48($sp) -/* f0eac10: 00402025 */ move $a0,$v0 -/* f0eac14: 87a50142 */ lh $a1,0x142($sp) -/* f0eac18: afb00018 */ sw $s0,0x18($sp) -/* f0eac1c: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eac20: afa30014 */ sw $v1,0x14($sp) -/* f0eac24: 8fa50058 */ lw $a1,0x58($sp) -/* f0eac28: 8fa80048 */ lw $t0,0x48($sp) -/* f0eac2c: 00402025 */ move $a0,$v0 -/* f0eac30: 24a50003 */ addiu $a1,$a1,0x3 -/* f0eac34: afa50054 */ sw $a1,0x54($sp) -/* f0eac38: 8fa600ac */ lw $a2,0xac($sp) -/* f0eac3c: 8fa7004c */ lw $a3,0x4c($sp) -/* f0eac40: afb00014 */ sw $s0,0x14($sp) -/* f0eac44: afb00018 */ sw $s0,0x18($sp) -/* f0eac48: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eac4c: afa80010 */ sw $t0,0x10($sp) -/* f0eac50: 8fa300a8 */ lw $v1,0xa8($sp) -/* f0eac54: 8fa50058 */ lw $a1,0x58($sp) -/* f0eac58: 00402025 */ move $a0,$v0 -/* f0eac5c: 24630002 */ addiu $v1,$v1,0x2 -/* f0eac60: afa30010 */ sw $v1,0x10($sp) -/* f0eac64: afa3004c */ sw $v1,0x4c($sp) -/* f0eac68: 8fa600ac */ lw $a2,0xac($sp) -/* f0eac6c: afb00014 */ sw $s0,0x14($sp) -/* f0eac70: afb00018 */ sw $s0,0x18($sp) -/* f0eac74: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eac78: 24a70001 */ addiu $a3,$a1,0x1 -/* f0eac7c: 8fa50058 */ lw $a1,0x58($sp) -/* f0eac80: 8fa900a8 */ lw $t1,0xa8($sp) -/* f0eac84: 00402025 */ move $a0,$v0 -/* f0eac88: 24a50002 */ addiu $a1,$a1,0x2 -/* f0eac8c: afa50044 */ sw $a1,0x44($sp) -/* f0eac90: 8fa600ac */ lw $a2,0xac($sp) -/* f0eac94: 8fa70054 */ lw $a3,0x54($sp) -/* f0eac98: afb00014 */ sw $s0,0x14($sp) -/* f0eac9c: afb00018 */ sw $s0,0x18($sp) -/* f0eaca0: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eaca4: afa90010 */ sw $t1,0x10($sp) -/* f0eaca8: 8fa600a8 */ lw $a2,0xa8($sp) -/* f0eacac: 8fa7005c */ lw $a3,0x5c($sp) -/* f0eacb0: 8fa50044 */ lw $a1,0x44($sp) -/* f0eacb4: 24c30001 */ addiu $v1,$a2,0x1 -/* f0eacb8: 24e7000e */ addiu $a3,$a3,0xe -/* f0eacbc: afa70054 */ sw $a3,0x54($sp) -/* f0eacc0: afa30010 */ sw $v1,0x10($sp) -/* f0eacc4: afa30048 */ sw $v1,0x48($sp) -/* f0eacc8: 00402025 */ move $a0,$v0 -/* f0eaccc: afb00014 */ sw $s0,0x14($sp) -/* f0eacd0: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eacd4: afb00018 */ sw $s0,0x18($sp) -/* f0eacd8: 8fa300a8 */ lw $v1,0xa8($sp) -/* f0eacdc: 00402025 */ move $a0,$v0 -/* f0eace0: 8fa50058 */ lw $a1,0x58($sp) -/* f0eace4: 24630003 */ addiu $v1,$v1,0x3 -/* f0eace8: afa30010 */ sw $v1,0x10($sp) -/* f0eacec: afa30044 */ sw $v1,0x44($sp) -/* f0eacf0: 8fa6004c */ lw $a2,0x4c($sp) -/* f0eacf4: 8fa70054 */ lw $a3,0x54($sp) -/* f0eacf8: afb00014 */ sw $s0,0x14($sp) -/* f0eacfc: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0ead00: afb00018 */ sw $s0,0x18($sp) -/* f0ead04: 8fae0048 */ lw $t6,0x48($sp) -/* f0ead08: 00402025 */ move $a0,$v0 -/* f0ead0c: 8fa50054 */ lw $a1,0x54($sp) -/* f0ead10: 8fa600a8 */ lw $a2,0xa8($sp) -/* f0ead14: 8fa70098 */ lw $a3,0x98($sp) -/* f0ead18: afb00014 */ sw $s0,0x14($sp) -/* f0ead1c: afb00018 */ sw $s0,0x18($sp) -/* f0ead20: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0ead24: afae0010 */ sw $t6,0x10($sp) -/* f0ead28: 8fac0044 */ lw $t4,0x44($sp) -/* f0ead2c: 00402025 */ move $a0,$v0 -/* f0ead30: 8fa50054 */ lw $a1,0x54($sp) -/* f0ead34: 8fa6004c */ lw $a2,0x4c($sp) -/* f0ead38: 8fa70098 */ lw $a3,0x98($sp) -/* f0ead3c: afb00014 */ sw $s0,0x14($sp) -/* f0ead40: afb00018 */ sw $s0,0x18($sp) -/* f0ead44: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0ead48: afac0010 */ sw $t4,0x10($sp) -/* f0ead4c: 8fa300c8 */ lw $v1,0xc8($sp) -/* f0ead50: 8fa50098 */ lw $a1,0x98($sp) -/* f0ead54: 2401ff00 */ li $at,-256 -/* f0ead58: 8fad0044 */ lw $t5,0x44($sp) -/* f0ead5c: 0061c024 */ and $t8,$v1,$at -/* f0ead60: 3710003f */ ori $s0,$t8,0x3f -/* f0ead64: 24a70001 */ addiu $a3,$a1,0x1 -/* f0ead68: afa70054 */ sw $a3,0x54($sp) -/* f0ead6c: afb00014 */ sw $s0,0x14($sp) -/* f0ead70: afb00018 */ sw $s0,0x18($sp) -/* f0ead74: 03001825 */ move $v1,$t8 -/* f0ead78: afb8005c */ sw $t8,0x5c($sp) -/* f0ead7c: 00402025 */ move $a0,$v0 -/* f0ead80: 8fa600a8 */ lw $a2,0xa8($sp) -/* f0ead84: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0ead88: afad0010 */ sw $t5,0x10($sp) -/* f0ead8c: 8fa7009c */ lw $a3,0x9c($sp) -/* f0ead90: 8faf004c */ lw $t7,0x4c($sp) -/* f0ead94: 00402025 */ move $a0,$v0 -/* f0ead98: 24e7fffc */ addiu $a3,$a3,-4 -/* f0ead9c: afa70050 */ sw $a3,0x50($sp) -/* f0eada0: 8fa50054 */ lw $a1,0x54($sp) -/* f0eada4: 8fa60048 */ lw $a2,0x48($sp) -/* f0eada8: afb00014 */ sw $s0,0x14($sp) -/* f0eadac: afb00018 */ sw $s0,0x18($sp) -/* f0eadb0: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eadb4: afaf0010 */ sw $t7,0x10($sp) -/* f0eadb8: 8faa005c */ lw $t2,0x5c($sp) -/* f0eadbc: 8fb9004c */ lw $t9,0x4c($sp) -/* f0eadc0: 00402025 */ move $a0,$v0 -/* f0eadc4: 354900cf */ ori $t1,$t2,0xcf -/* f0eadc8: afa90018 */ sw $t1,0x18($sp) -/* f0eadcc: 8fa50050 */ lw $a1,0x50($sp) -/* f0eadd0: 8fa60048 */ lw $a2,0x48($sp) -/* f0eadd4: 8fa7009c */ lw $a3,0x9c($sp) -/* f0eadd8: afb00014 */ sw $s0,0x14($sp) -/* f0eaddc: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eade0: afb90010 */ sw $t9,0x10($sp) -/* f0eade4: 10000077 */ b .JF0f0eafc4 -/* f0eade8: afa20130 */ sw $v0,0x130($sp) -.JF0f0eadec: -/* f0eadec: 87ab0146 */ lh $t3,0x146($sp) -/* f0eadf0: 3c198008 */ lui $t9,0x8008 -/* f0eadf4: 8f390148 */ lw $t9,0x148($t9) -/* f0eadf8: 250f0001 */ addiu $t7,$t0,0x1 -/* f0eadfc: 3c078008 */ lui $a3,0x8008 -/* f0eae00: 256dfffe */ addiu $t5,$t3,-2 -/* f0eae04: 25780008 */ addiu $t8,$t3,0x8 -/* f0eae08: afac0080 */ sw $t4,0x80($sp) -/* f0eae0c: afad007c */ sw $t5,0x7c($sp) -/* f0eae10: afb80078 */ sw $t8,0x78($sp) -/* f0eae14: afaf0074 */ sw $t7,0x74($sp) -/* f0eae18: 8ce7014c */ lw $a3,0x14c($a3) -/* f0eae1c: 27a400c0 */ addiu $a0,$sp,0xc0 -/* f0eae20: 27a500c4 */ addiu $a1,$sp,0xc4 -/* f0eae24: 8fa60120 */ lw $a2,0x120($sp) -/* f0eae28: afa00014 */ sw $zero,0x14($sp) -/* f0eae2c: 0fc55d49 */ jal textMeasure -/* f0eae30: afb90010 */ sw $t9,0x10($sp) -/* f0eae34: 87ae0142 */ lh $t6,0x142($sp) -/* f0eae38: 8fac00c4 */ lw $t4,0xc4($sp) -/* f0eae3c: 8faa0074 */ lw $t2,0x74($sp) -/* f0eae40: 8fa40130 */ lw $a0,0x130($sp) -/* f0eae44: 01cc6821 */ addu $t5,$t6,$t4 -/* f0eae48: 25ab0019 */ addiu $t3,$t5,0x19 -/* f0eae4c: 2549fffe */ addiu $t1,$t2,-2 -/* f0eae50: afa90074 */ sw $t1,0x74($sp) -/* f0eae54: 0fc54bb7 */ jal text0f153780 -/* f0eae58: afab006c */ sw $t3,0x6c($sp) -/* f0eae5c: 0fc38c93 */ jal menugfx0f0e2498 -/* f0eae60: 00402025 */ move $a0,$v0 -/* f0eae64: 8fa3012c */ lw $v1,0x12c($sp) -/* f0eae68: 8fa6007c */ lw $a2,0x7c($sp) -/* f0eae6c: 2401ff00 */ li $at,-256 -/* f0eae70: 00617824 */ and $t7,$v1,$at -/* f0eae74: 35f0003f */ ori $s0,$t7,0x3f -/* f0eae78: 24d80001 */ addiu $t8,$a2,0x1 -/* f0eae7c: afb80010 */ sw $t8,0x10($sp) -/* f0eae80: afb00018 */ sw $s0,0x18($sp) -/* f0eae84: 01e01825 */ move $v1,$t7 -/* f0eae88: afaf0014 */ sw $t7,0x14($sp) -/* f0eae8c: afaf0054 */ sw $t7,0x54($sp) -/* f0eae90: 00402025 */ move $a0,$v0 -/* f0eae94: 87a50142 */ lh $a1,0x142($sp) -/* f0eae98: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eae9c: 8fa70080 */ lw $a3,0x80($sp) -/* f0eaea0: 8fa50080 */ lw $a1,0x80($sp) -/* f0eaea4: 8faa0078 */ lw $t2,0x78($sp) -/* f0eaea8: 00402025 */ move $a0,$v0 -/* f0eaeac: 24a70001 */ addiu $a3,$a1,0x1 -/* f0eaeb0: afa7005c */ sw $a3,0x5c($sp) -/* f0eaeb4: 8fa6007c */ lw $a2,0x7c($sp) -/* f0eaeb8: afb00014 */ sw $s0,0x14($sp) -/* f0eaebc: afb00018 */ sw $s0,0x18($sp) -/* f0eaec0: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eaec4: afaa0010 */ sw $t2,0x10($sp) -/* f0eaec8: 87a90142 */ lh $t1,0x142($sp) -/* f0eaecc: 8fa60078 */ lw $a2,0x78($sp) -/* f0eaed0: 8fa30054 */ lw $v1,0x54($sp) -/* f0eaed4: 00097080 */ sll $t6,$t1,0x2 -/* f0eaed8: 01c97023 */ subu $t6,$t6,$t1 -/* f0eaedc: 01c93821 */ addu $a3,$t6,$t1 -/* f0eaee0: 24e70042 */ addiu $a3,$a3,0x42 -/* f0eaee4: 24c80001 */ addiu $t0,$a2,0x1 -/* f0eaee8: afa80010 */ sw $t0,0x10($sp) -/* f0eaeec: afa8004c */ sw $t0,0x4c($sp) -/* f0eaef0: 00402025 */ move $a0,$v0 -/* f0eaef4: afb00018 */ sw $s0,0x18($sp) -/* f0eaef8: 01202825 */ move $a1,$t1 -/* f0eaefc: 04e10003 */ bgez $a3,.JF0f0eaf0c -/* f0eaf00: 00076083 */ sra $t4,$a3,0x2 -/* f0eaf04: 24e10003 */ addiu $at,$a3,0x3 -/* f0eaf08: 00016083 */ sra $t4,$at,0x2 -.JF0f0eaf0c: -/* f0eaf0c: 2587ffff */ addiu $a3,$t4,-1 -/* f0eaf10: afa70058 */ sw $a3,0x58($sp) -/* f0eaf14: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eaf18: afa30014 */ sw $v1,0x14($sp) -/* f0eaf1c: 8fa50058 */ lw $a1,0x58($sp) -/* f0eaf20: 8fa8004c */ lw $t0,0x4c($sp) -/* f0eaf24: 00402025 */ move $a0,$v0 -/* f0eaf28: 24a50003 */ addiu $a1,$a1,0x3 -/* f0eaf2c: afa50054 */ sw $a1,0x54($sp) -/* f0eaf30: 8fa60078 */ lw $a2,0x78($sp) -/* f0eaf34: 8fa7005c */ lw $a3,0x5c($sp) -/* f0eaf38: afb00014 */ sw $s0,0x14($sp) -/* f0eaf3c: afb00018 */ sw $s0,0x18($sp) -/* f0eaf40: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eaf44: afa80010 */ sw $t0,0x10($sp) -/* f0eaf48: 8fad0074 */ lw $t5,0x74($sp) -/* f0eaf4c: 8fa50058 */ lw $a1,0x58($sp) -/* f0eaf50: 00402025 */ move $a0,$v0 -/* f0eaf54: 25ab0003 */ addiu $t3,$t5,0x3 -/* f0eaf58: afab0010 */ sw $t3,0x10($sp) -/* f0eaf5c: 8fa60078 */ lw $a2,0x78($sp) -/* f0eaf60: afb00014 */ sw $s0,0x14($sp) -/* f0eaf64: afb00018 */ sw $s0,0x18($sp) -/* f0eaf68: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eaf6c: 24a70001 */ addiu $a3,$a1,0x1 -/* f0eaf70: 8fa50058 */ lw $a1,0x58($sp) -/* f0eaf74: 8fb80074 */ lw $t8,0x74($sp) -/* f0eaf78: 00402025 */ move $a0,$v0 -/* f0eaf7c: 24a50002 */ addiu $a1,$a1,0x2 -/* f0eaf80: afa50044 */ sw $a1,0x44($sp) -/* f0eaf84: 8fa60078 */ lw $a2,0x78($sp) -/* f0eaf88: 8fa70054 */ lw $a3,0x54($sp) -/* f0eaf8c: afb00014 */ sw $s0,0x14($sp) -/* f0eaf90: afb00018 */ sw $s0,0x18($sp) -/* f0eaf94: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eaf98: afb80010 */ sw $t8,0x10($sp) -/* f0eaf9c: 8fa60074 */ lw $a2,0x74($sp) -/* f0eafa0: 8fa50044 */ lw $a1,0x44($sp) -/* f0eafa4: 00402025 */ move $a0,$v0 -/* f0eafa8: 24d90001 */ addiu $t9,$a2,0x1 -/* f0eafac: afb90010 */ sw $t9,0x10($sp) -/* f0eafb0: 8fa7006c */ lw $a3,0x6c($sp) -/* f0eafb4: afb00014 */ sw $s0,0x14($sp) -/* f0eafb8: 0fc38d3e */ jal menugfxDrawProjectedLine -/* f0eafbc: afb00018 */ sw $s0,0x18($sp) -/* f0eafc0: afa20130 */ sw $v0,0x130($sp) -.JF0f0eafc4: -/* f0eafc4: 8fbf003c */ lw $ra,0x3c($sp) -/* f0eafc8: 8fa20130 */ lw $v0,0x130($sp) -/* f0eafcc: 8fb00038 */ lw $s0,0x38($sp) -/* f0eafd0: 03e00008 */ jr $ra -/* f0eafd4: 27bd0130 */ addiu $sp,$sp,0x130 -); - -const char var7f1adfa0[] = "brcol"; -const char var7f1adfa8[] = "%d: "; -const char var7f1adfb0[] = "%s"; -#else -Gfx *menuitemObjectivesRenderOne(Gfx *gdl, struct menudialog *dialog, s32 index, s32 position, s16 objx, s16 objy, s16 width, s16 height, bool withstatus, bool narrow) -{ - u32 sp12c; - s32 x; - s32 y; - char *sp120; - char buffer[80]; - char *spcc; - u32 spc8; - s32 textwidth; - s32 textheight; - s32 spbc; - s32 tmp; - s32 spb4; - s32 spb0; - s32 spac; - s32 spa8; - u32 stack3[2]; - s32 sp9c; - s32 sp98; - u32 s0; - s32 stack[4]; - s32 sp80; - s32 sp7c; - s32 sp78; - s32 sp74; - s32 stack2; - s32 sp6c; - s32 sp58; - s32 sp54; - - spbc = 0; - - if (narrow) { -#if VERSION == VERSION_JPN_FINAL - spbc = 14; -#elif VERSION >= VERSION_PAL_FINAL - spbc = 16; -#else - spbc = 12; -#endif - } - - mainOverrideVariable("brcol", &var800711e8); - sp120 = langGet(g_Briefing.objectivenames[index]); - y = objy; - sp12c = MIXCOLOUR(dialog, unfocused); - - if (dialog->dimmed) { - sp12c = (colourBlend(sp12c, 0, 0x2c) & 0xffffff00) | (sp12c & 0xff); - } - - textSetWaveColours(g_MenuColourPalettes3[dialog->type].unfocused, g_MenuColourPalettes2[dialog->type].unfocused); - buffer[0] = '\0'; - - // Render objective number - gdl = text0f153628(gdl); - sprintf(buffer, "%d: ", position); - textMeasure(&textheight, &textwidth, buffer, g_CharsHandelGothicSm, g_FontHandelGothicSm, 0); - x = objx - textwidth + 25; - gdl = textRenderProjected(gdl, &x, &y, buffer, g_CharsHandelGothicSm, g_FontHandelGothicSm, sp12c, width, height, 0, 0); - - x = objx + 25; - - if (narrow) { - textWrap(85, sp120, buffer, g_CharsHandelGothicXs, g_FontHandelGothicXs); - gdl = textRenderProjected(gdl, &x, &y, buffer, g_CharsHandelGothicXs, g_FontHandelGothicXs, sp12c, width, height, 0, 0); - } else { - sprintf(buffer, "%s", sp120); - gdl = textRenderProjected(gdl, &x, &y, buffer, g_CharsHandelGothicSm, g_FontHandelGothicSm, sp12c, width, height, 0, 0); - } - - if (withstatus) { - switch (objectiveCheck(index)) { - case OBJECTIVE_INCOMPLETE: - spcc = langGet(L_OPTIONS_001); // "Incomplete" - spc8 = 0xffff00ff; - break; - case OBJECTIVE_COMPLETE: - spcc = langGet(L_OPTIONS_000); // "Complete" - spc8 = 0x00ff00ff; - break; - case OBJECTIVE_FAILED: - spcc = langGet(L_OPTIONS_002); // "Failed" - spc8 = 0xff4040ff; - break; - } - - if (dialog != g_Menus[g_MpPlayerNum].curdialog) { - spc8 = g_MenuColourPalettes[0].unfocused; - } - - textMeasure(&textheight, &textwidth, spcc, g_CharsHandelGothicXs, g_FontHandelGothicXs, 0); - - if (var800711e8 != 0) { - spc8 = var800711e8; - } - - x = objx + width - textwidth - 10; - y = objy + spbc + 9; - - gdl = textRenderProjected(gdl, &x, &y, spcc, g_CharsHandelGothicXs, g_FontHandelGothicXs, spc8, width, height, 0, 0); - - x = objx + width - textwidth - 10; - y = objy + spbc + 9; - - gdl = textRenderProjected(gdl, &x, &y, spcc, g_CharsHandelGothicXs, g_FontHandelGothicXs, spc8 & 0xffffff7f, width, height, 0, 0); - - x = objx + width - textwidth - 13; - y = objy + 9; - - gdl = text0f153780(gdl); - - spb4 = objx + 22; - spb0 = objy - 2; - spac = objy + 8; - - spa8 = y + spbc + 2; - tmp = (objx * 3 + objx + 66) / 4; - sp9c = x; - sp98 = tmp + 19 + (sp9c - tmp - 24) * (position - 1) / 5; - - sp58 = (objx * 3 + objx + 66) / 4 - 1; - sp54 = (objx * 3 + objx + 66) / 4 + 14; - - spbc = (spc8 & 0xffffff00) | 0x3f; - - gdl = menugfx0f0e2498(gdl); - - // Blue lines - gdl = menugfxDrawProjectedLine(gdl, objx, spb0, spb4, spb0 + 1, sp12c & 0xffffff00, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, spb4, spb0, spb4 + 1, spac, (sp12c & 0xffffff00) | 0x3f, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, objx, spac, sp58, spac + 1, sp12c & 0xffffff00, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, sp58 + 3, spac, spb4 + 1, spac + 1, (sp12c & 0xffffff00) | 0x3f, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, sp58, spac, sp58 + 1, spa8 + 2, (sp12c & 0xffffff00) | 0x3f, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, sp58 + 2, spac, sp58 + 3, spa8, (sp12c & 0xffffff00) | 0x3f, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, sp58 + 2, spa8, sp54, spa8 + 1, (sp12c & 0xffffff00) | 0x3f, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, sp58, spa8 + 2, sp54, spa8 + 3, (sp12c & 0xffffff00) | 0x3f, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, sp54, spa8, sp98, spa8 + 1, (sp12c & 0xffffff00) | 0x3f, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, sp54, spa8 + 2, sp98, spa8 + 3, (sp12c & 0xffffff00) | 0x3f, (sp12c & 0xffffff00) | 0x3f); - - // Coloured lines - gdl = menugfxDrawProjectedLine(gdl, sp98, spa8, sp98 + 1, spa8 + 3, (spc8 & 0xffffff00) | 0x3f, (spc8 & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, sp98 + 1, spa8 + 1, sp9c - 4, spa8 + 2, (spc8 & 0xffffff00) | 0x3f, (spc8 & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, sp9c - 4, spa8 + 1, sp9c, spa8 + 2, (spc8 & 0xffffff00) | 0x3f, (spc8 & 0xffffff00) | 0xcf); - } else { - // Render lines without status - sp80 = objx + 22; - sp7c = objy - 2; - sp78 = objy + 8; - sp74 = y + 1; - - textMeasure(&textheight, &textwidth, sp120, g_CharsHandelGothicSm, g_FontHandelGothicSm, 0); - - sp6c = objx + textwidth + 25; - sp58 = (objx * 3 + objx + 66) / 4 - 1; - - gdl = text0f153780(gdl); - gdl = menugfx0f0e2498(gdl); - - gdl = menugfxDrawProjectedLine(gdl, objx, sp7c, sp80, sp7c + 1, sp12c & 0xffffff00, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, sp80, sp7c, sp80 + 1, sp78, (sp12c & 0xffffff00) | 0x3f, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, objx, sp78, sp58, sp78 + 1, sp12c & 0xffffff00, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, sp58 + 3, sp78, sp80 + 1, sp78 + 1, (sp12c & 0xffffff00) | 0x3f, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, sp58, sp78, sp58 + 1, sp74 + 2, (sp12c & 0xffffff00) | 0x3f, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, sp58 + 2, sp78, sp58 + 3, sp74, (sp12c & 0xffffff00) | 0x3f, (sp12c & 0xffffff00) | 0x3f); - gdl = menugfxDrawProjectedLine(gdl, sp58 + 2, sp74, sp6c, sp74 + 1, (sp12c & 0xffffff00) | 0x3f, (sp12c & 0xffffff00) | 0x3f); - } - - return gdl; -} -#endif - -Gfx *menuitemObjectivesRender(Gfx *gdl, struct menurendercontext *context) -{ - s32 y = context->y + 5; - s32 position = 1; - s32 i; - - for (i = 0; i < 6; i++) { - if (g_Briefing.objectivenames[i] && g_Briefing.objectivedifficulties[i] & (1 << lvGetDifficulty())) { - gdl = menuitemObjectivesRenderOne(gdl, - context->dialog, - i, position, context->x, y, context->width, context->height, - context->item->param != 1, - context->item->param == 2); - - position++; - -#if VERSION >= VERSION_JPN_FINAL - if (context->item->param == 0) { - y += 24; - } else if (context->item->param == 2) { - y += 36; - } else { - y += 16; - } -#else - if (context->item->param == 0) { - y += 18; - } else if (context->item->param == 2) { - y += VERSION >= VERSION_PAL_FINAL ? 34 : 30; - } else { - y += 14; - } -#endif - } - } - - return gdl; -} - Gfx *menuitemModelRender(Gfx *gdl, struct menurendercontext *context) { if (context->item->flags & MENUITEMFLAG_LIST_CUSTOMRENDER) { @@ -5473,7 +4625,6 @@ Gfx *menuitemRender(Gfx *gdl, struct menurendercontext *context) case MENUITEMTYPE_LABEL: return menuitemLabelRender(gdl, context); case MENUITEMTYPE_METER: return menuitemMeterRender(gdl, context); case MENUITEMTYPE_SEPARATOR: return menuitemSeparatorRender(gdl, context); - case MENUITEMTYPE_OBJECTIVES: return menuitemObjectivesRender(gdl, context); case MENUITEMTYPE_07: return menuitem07Render(gdl); case MENUITEMTYPE_DROPDOWN: return menuitemDropdownRender(gdl, context); case MENUITEMTYPE_KEYBOARD: return menuitemKeyboardRender(gdl, context); diff --git a/src/game/nbomb.c b/src/game/nbomb.c index 1bb7706b6..0397c3c97 100644 --- a/src/game/nbomb.c +++ b/src/game/nbomb.c @@ -7,7 +7,6 @@ #include "game/chr.h" #include "game/chraction.h" #include "game/prop.h" -#include "game/objectives.h" #include "game/atan2f.h" #include "game/tex.h" #include "game/camera.h" @@ -740,42 +739,6 @@ void nbombCreateStorm(struct coord *pos, struct prop *ownerprop) #endif } -bool doorIsOpenOrOpening(s32 tagnum) -{ - struct defaultobj *obj = objFindByTagId(tagnum); - - if (obj && obj->prop && obj->type == OBJTYPE_DOOR) { - struct doorobj *door = (struct doorobj *)obj; - - if (door->mode == DOORMODE_IDLE) { - if (door->frac <= 0) { - return false; - } - return true; - } else if (door->mode == DOORMODE_OPENING) { - return true; - } else if (door->mode == DOORMODE_CLOSING) { - return false; - } else { - return false; - } - } - - return false; -} - -f32 gasGetDoorFrac(s32 tagnum) -{ - struct defaultobj *obj = objFindByTagId(tagnum); - - if (obj && obj->prop && obj->type == OBJTYPE_DOOR) { - struct doorobj *door = (struct doorobj *)obj; - return door->frac; - } - - return 0; -} - /** * Checks if the player is inside an nbomb storm, and if so renders the black * storm texture directly over the screen. @@ -898,206 +861,3 @@ Gfx *nbombRenderOverlay(Gfx *gdl) return gdl; } - -Gfx *gasRender(Gfx *gdl) -{ - bool show = false; - f32 alphafrac = 1.0f; - struct coord campos; - s16 layer2t; - u32 alpha; - s32 i; - bool drawn = false; - - const s32 gasrooms[] = { - 0x92, - 0x93, - 0x94, - 0x95, - 0x96, - 0x97, - 0x98, - 0x99, - 0x9a, - 0x91, - 0x8f, - 0x90, - }; - - if (g_Vars.stagenum == STAGE_ESCAPE) { - f32 intensityfrac = 1.0f; - - campos.x = g_Vars.currentplayer->cam_pos.x; - campos.y = g_Vars.currentplayer->cam_pos.y; - campos.z = g_Vars.currentplayer->cam_pos.z; - - for (i = 0; i < 12; i++) { - if (roomContainsCoord(&campos, gasrooms[i])) { - show = true; - } - } - - if (!show) { - // Outside of the gas rooms list - check distance to abitrary point - f32 distance = sqrtf( - (campos.f[0] - -1473.0f) * (campos.f[0] - -1473.0f) + - (campos.f[1] - -308.0f) * (campos.f[1] - -308.0f) + - (campos.f[2] - -13660.0f) * (campos.f[2] - -13660.0f)); - - if (distance < 1328.0f) { - show = true; - alphafrac = 1.0f - distance / 1328.0f; - intensityfrac = gasGetDoorFrac(0x32); - } - } else { - if (roomContainsCoord(&campos, 0x91)) { - // In the small room between the first two doors - f32 frac1 = gasGetDoorFrac(0x30); - f32 frac2 = gasGetDoorFrac(0x31); - - if (frac2 > frac1) { - intensityfrac = frac2; - } else { - intensityfrac = frac1; - } - - intensityfrac += 0.2f; - } - } - - alphafrac *= intensityfrac; - - if (show && g_Vars.tickmode == TICKMODE_CUTSCENE) { - if (g_CutsceneCurAnimFrame60 < 2180) { - show = false; - } else if (g_CutsceneCurAnimFrame60 < 2600) { - f32 tmp = (g_CutsceneCurAnimFrame60 - 2180) / 420.0f; - alphafrac *= tmp; - } - } - - if (show) { - u32 *colours = gfxAllocateColours(1); - struct gfxvtx *vertices = gfxAllocateVertices(8); - s16 viewleft = viGetViewLeft() * 10; - s16 viewtop = viGetViewTop() * 10; - s16 viewright = (s16) (viGetViewLeft() + viGetViewWidth()) * 10; - s16 viewbottom = (s16) (viGetViewTop() + viGetViewHeight()) * 10; - f32 lookx = g_Vars.currentplayer->cam_look.x; - f32 lookz = g_Vars.currentplayer->cam_look.z; - f32 camposx = g_Vars.currentplayer->cam_pos.x; - f32 camposz = g_Vars.currentplayer->cam_pos.z; - f32 f2; - f32 f16; - s32 stack; - f32 sp78; - s16 layer2s; - s16 layer1s; - s16 layer1t; - - f2 = (camposx + camposz) / 3000.0f; - f16 = (f2 - (s32) f2); - - sp78 = atan2f(-lookx, lookz) / M_BADTAU; - - layer2s = ((s32) (2.0f * ((menuGetSinOscFrac(4.0f) - 0.5f) / 6.0f + sp78 + f16 * 1.5f) * 128.0f * 32.0f) % 2048); - layer1s = ((s32) (2.0f * ((menuGetCosOscFrac(4.0f) - 0.5f) / -9.0f + sp78 + f16) * 128.0f * 32.0f) % 2048); - - layer2t = (s16) ((s32) (campos.y * 8.0f) % 2048) + (s16) (2.0f * g_20SecIntervalFrac * 128.0f * 32.0f); - layer1t = (s16) ((s32) (campos.y * 8.0f) % 2048) + (s16) (2.0f * g_20SecIntervalFrac * 64.0f * 32.0f); - - drawn = true; - - gdl = func0f0d479c(gdl); - - if (1); - - texSelect(&gdl, &g_TexGeneralConfigs[6], 4, 1, 2, true, NULL); - - gDPPipeSync(gdl++); - gDPSetCycleType(gdl++, G_CYC_1CYCLE); - gDPSetAlphaCompare(gdl++, G_AC_NONE); - gDPSetCombineMode(gdl++, G_CC_MODULATEIA, G_CC_MODULATEIA); - gSPClearGeometryMode(gdl++, G_CULL_BOTH); - gDPSetColorDither(gdl++, G_CD_DISABLE); - gDPSetTextureFilter(gdl++, G_TF_BILERP); - gDPSetRenderMode(gdl++, G_RM_CLD_SURF, G_RM_CLD_SURF2); - gDPSetTexturePersp(gdl++, G_TP_PERSP); - - vertices[0].x = viewleft; - vertices[0].y = viewtop; - vertices[0].z = -10; - - vertices[1].x = viewright; - vertices[1].y = viewtop; - vertices[1].z = -10; - - vertices[2].x = viewright; - vertices[2].y = viewbottom; - vertices[2].z = -10; - - vertices[3].x = viewleft; - vertices[3].y = viewbottom; - vertices[3].z = -10; - - vertices[4].x = viewleft; - vertices[4].y = viewtop; - vertices[4].z = -10; - - vertices[5].x = viewright; - vertices[5].y = viewtop; - vertices[5].z = -10; - - vertices[6].x = viewright; - vertices[6].y = viewbottom; - vertices[6].z = -10; - - vertices[7].x = viewleft; - vertices[7].y = viewbottom; - vertices[7].z = -10; - - vertices[0].s = layer1s; - vertices[0].t = layer1t; - vertices[1].s = layer1s + 960; - vertices[1].t = layer1t; - vertices[2].s = layer1s + 960; - vertices[2].t = layer1t + 640; - vertices[3].s = layer1s; - vertices[3].t = layer1t + 640; - - vertices[0].colour = 0; - vertices[1].colour = 0; - vertices[2].colour = 0; - vertices[3].colour = 0; - - vertices[4].s = layer2s; - vertices[4].t = layer2t; - vertices[5].s = layer2s + 640; - vertices[5].t = layer2t; - vertices[6].s = layer2s + 640; - vertices[6].t = layer2t + 480; - vertices[7].s = layer2s; - vertices[7].t = layer2t + 480; - - vertices[4].colour = 0; - vertices[5].colour = 0; - vertices[6].colour = 0; - vertices[7].colour = 0; - - alpha = 127.0f * alphafrac; - - colours[0] = 0x3faf1100 | alpha; - - gDPSetColorArray(gdl++, osVirtualToPhysical(colours), 1); - gDPSetVerticeArray(gdl++, osVirtualToPhysical(vertices), 8); - - gDPTri4(gdl++, 0, 1, 2, 2, 3, 0, 4, 5, 6, 6, 7, 4); - } - } - - if (drawn) { - gdl = func0f0d49c8(gdl); - } - - return gdl; -} diff --git a/src/game/objectives.c b/src/game/objectives.c deleted file mode 100644 index cbb1159ec..000000000 --- a/src/game/objectives.c +++ /dev/null @@ -1,522 +0,0 @@ -#include -#include "constants.h" -#include "game/chraction.h" -#include "game/prop.h" -#include "game/setuputils.h" -#include "game/objectives.h" -#include "game/tex.h" -#include "game/camera.h" -#include "game/hudmsg.h" -#include "game/inv.h" -#include "game/playermgr.h" -#include "game/lv.h" -#include "game/lang.h" -#include "game/propobj.h" -#include "bss.h" -#include "lib/dma.h" -#include "lib/memp.h" -#include "lib/rng.h" -#include "lib/str.h" -#include "lib/mtx.h" -#include "data.h" -#include "types.h" - -struct objective *g_Objectives[MAX_OBJECTIVES]; -u32 g_ObjectiveStatuses[MAX_OBJECTIVES]; -struct tag *g_TagsLinkedList; -struct briefingobj *g_BriefingObjs; -struct criteria_roomentered *g_RoomEnteredCriterias; -struct criteria_throwinroom *g_ThrowInRoomCriterias; -struct criteria_holograph *g_HolographCriterias; -s32 g_NumTags; -struct tag **g_TagPtrs; -u32 var8009d0cc; - -s32 g_ObjectiveLastIndex = -1; -bool g_ObjectiveChecksDisabled = false; - -#if PIRACYCHECKS -u32 xorBaffbeff(u32 value) -{ - return value ^ 0xbaffbeff; -} - -u32 xorBabeffff(u32 value) -{ - return value ^ 0xbabeffff; -} - -u32 xorBoobless(u32 value) -{ - return value ^ 0xb00b1e55; -} - -void func0f095350(u32 arg0, u32 *arg1) -{ - volatile u32 *ptr; - u32 value; - - __osPiGetAccess(); - - ptr = (u32 *)(xorBoobless(0x04600010 ^ 0xb00b1e55) | 0xa0000000); - - value = *ptr; - - while (value & 3) { - value = *ptr; - } - - *arg1 = *(u32 *)((u32)osRomBase | arg0 | 0xa0000000); - - __osPiRelAccess(); -} -#endif - -void tagsReset(void) -{ - s32 index = 0; - struct tag *tag = g_TagsLinkedList; - - while (tag) { - if (tag->tagnum >= index) { - index = tag->tagnum + 1; - } - - tag = tag->next; - } - - g_NumTags = index; - - if (g_NumTags) { - u32 size = index * 4; - g_TagPtrs = mempAlloc(ALIGN16(size), MEMPOOL_STAGE); - - for (index = 0; index < g_NumTags; index++) { - g_TagPtrs[index] = NULL; - } - } - - tag = g_TagsLinkedList; - - while (tag) { - g_TagPtrs[tag->tagnum] = tag; - tag = tag->next; - } - -#if PIRACYCHECKS - { - u32 a = xorBaffbeff(0xb0000a5c ^ 0xbaffbeff); - u32 b = xorBabeffff(0x1740fff9 ^ 0xbabeffff); - - if (mtxGetObfuscatedRomBase() != b) { - // Read 4KB from a random ROM location within 128KB from the start of - // the ROM, and write it to a random memory location between 0x80010000 - // and 0x80030ff8. This will corrupt instructions in the lib segment. - dmaExec((u8 *)((random() & 0x1fff8) + 0x80010000), random() & 0x1fffe, 0x1000); - } - } -#endif -} - -struct tag *tagFindById(s32 tag_id) -{ - struct tag *tag = NULL; - - if (tag_id >= 0 && tag_id < g_NumTags) { - tag = g_TagPtrs[tag_id]; - } - - return tag; -} - -s32 objGetTagNum(struct defaultobj *obj) -{ - struct tag *tag = g_TagsLinkedList; - - if (obj && (obj->hidden & OBJHFLAG_TAGGED)) { - while (tag) { - if (obj == tag->obj) { - return tag->tagnum; - } - - tag = tag->next; - } - } - - return -1; -} - -struct defaultobj *objFindByTagId(s32 tag_id) -{ - struct tag *tag = tagFindById(tag_id); - struct defaultobj *obj = NULL; - - if (tag) { - obj = tag->obj; - } - - if (obj && (obj->hidden & OBJHFLAG_TAGGED) == 0) { - obj = NULL; - } - - return obj; -} - -s32 objectiveGetCount(void) -{ - return g_ObjectiveLastIndex + 1; -} - -char *objectiveGetText(s32 index) -{ - if (index < 10 && g_Objectives[index]) { - return langGet(g_Objectives[index]->text); - } - - return NULL; -} - -u32 objectiveGetDifficultyBits(s32 index) -{ - if (index < 10 && g_Objectives[index]) { - return g_Objectives[index]->difficulties; - } - - return DIFFBIT_A | DIFFBIT_SA | DIFFBIT_PA | DIFFBIT_PD; -} - -/** - * Check if an objective is complete. - * - * It starts be setting the objective's status to complete, then iterates each - * requirement in the objective to decide whether to change it to incomplete or - * failed. - */ -s32 objectiveCheck(s32 index) -{ - u32 stack[5]; - s32 objstatus = OBJECTIVE_COMPLETE; - - if (index < ARRAYCOUNT(g_Objectives)) { - if (g_Objectives[index] == NULL) { - objstatus = g_ObjectiveStatuses[index]; - } else { - // Note: This is setting the cmd pointer to the start of the - // beginobjective macro in the stage's setup file. The first - // iteration of the while loop below will skip past it. - u32 *cmd = (u32 *)g_Objectives[index]; - - while ((u8)cmd[0] != OBJTYPE_ENDOBJECTIVE) { - // The status of this requirement - s32 reqstatus = OBJECTIVE_COMPLETE; - - switch ((u8)cmd[0]) { - case OBJECTIVETYPE_DESTROYOBJ: - { - struct defaultobj *obj = objFindByTagId(cmd[1]); - if (obj && obj->prop && objIsHealthy(obj)) { - reqstatus = OBJECTIVE_INCOMPLETE; - } - } - break; - case OBJECTIVETYPE_COMPFLAGS: - if (!chrHasStageFlag(NULL, cmd[1])) { - reqstatus = OBJECTIVE_INCOMPLETE; - } - break; - case OBJECTIVETYPE_FAILFLAGS: - if (chrHasStageFlag(NULL, cmd[1])) { - reqstatus = OBJECTIVE_FAILED; - } - break; - case OBJECTIVETYPE_COLLECTOBJ: - { - struct defaultobj *obj = objFindByTagId(cmd[1]); - s32 prevplayernum; - s32 collected = false; - s32 i; - - if (!obj || !obj->prop || !objIsHealthy(obj)) { - reqstatus = OBJECTIVE_FAILED; - } else { - prevplayernum = g_Vars.currentplayernum; - - for (i = 0; i < PLAYERCOUNT(); i++) { - if (g_Vars.players[i] == g_Vars.bond || g_Vars.players[i] == g_Vars.coop) { - setCurrentPlayerNum(i); - - if (invHasProp(obj->prop)) { - collected = true; - break; - } - } - } - - setCurrentPlayerNum(prevplayernum); - - if (!collected) { - reqstatus = OBJECTIVE_INCOMPLETE; - } - } - } - break; - case OBJECTIVETYPE_THROWOBJ: - { - struct defaultobj *obj = objFindByTagId(cmd[1]); - - if (obj && obj->prop) { - s32 i; - s32 prevplayernum = g_Vars.currentplayernum; - - for (i = 0; i < PLAYERCOUNT(); i++) { - if (g_Vars.players[i] == g_Vars.bond || g_Vars.players[i] == g_Vars.coop) { - setCurrentPlayerNum(i); - - if (invHasProp(obj->prop)) { - reqstatus = OBJECTIVE_INCOMPLETE; - break; - } - } - } - - setCurrentPlayerNum(prevplayernum); - } - } - break; - case OBJECTIVETYPE_HOLOGRAPH: - { - struct defaultobj *obj = objFindByTagId(cmd[1]); - - if (cmd[2] == 0) { - if (!obj || !obj->prop || !objIsHealthy(obj)) { - reqstatus = OBJECTIVE_FAILED; - } else { - reqstatus = OBJECTIVE_INCOMPLETE; - } - } - } - break; - case OBJECTIVETYPE_ENTERROOM: - if (cmd[2] == 0) { - reqstatus = OBJECTIVE_INCOMPLETE; - } - break; - case OBJECTIVETYPE_THROWINROOM: - if (cmd[3] == 0) { - reqstatus = OBJECTIVE_INCOMPLETE; - } - break; - case OBJTYPE_BEGINOBJECTIVE: - case OBJTYPE_ENDOBJECTIVE: - break; - } - - if (objstatus == OBJECTIVE_COMPLETE) { - if (reqstatus != OBJECTIVE_COMPLETE) { - // This is the first requirement that is causing the - // objective to not be complete, so apply it. - objstatus = reqstatus; - } - } else if (objstatus == OBJECTIVE_INCOMPLETE) { - if (reqstatus == OBJECTIVE_FAILED) { - // An earlier requirement was incomplete, - // and this requirement is failed. - objstatus = reqstatus; - } - } - - cmd = cmd + setupGetCmdLength(cmd); - } - } - } - - return objstatus; -} - -bool objectiveIsAllComplete(void) -{ - s32 i; - - for (i = 0; i < objectiveGetCount(); i++) { - u32 diffbits = objectiveGetDifficultyBits(i); - - if ((1 << lvGetDifficulty() & diffbits) && - objectiveCheck(i) != OBJECTIVE_COMPLETE) { - return false; - } - } - - return true; -} - -void objectivesDisableChecking(void) -{ - g_ObjectiveChecksDisabled = true; -} - -#if VERSION >= VERSION_NTSC_1_0 -void objectivesShowHudmsg(char *buffer, s32 hudmsgtype) -{ - s32 prevplayernum = g_Vars.currentplayernum; - s32 i; - - for (i = 0; i < PLAYERCOUNT(); i++) { - setCurrentPlayerNum(i); - - if (g_Vars.currentplayer == g_Vars.bond || g_Vars.currentplayer == g_Vars.coop) { - hudmsgCreateWithFlags(buffer, hudmsgtype, HUDMSGFLAG_DELAY | HUDMSGFLAG_ALLOWDUPES); - } - } - - setCurrentPlayerNum(prevplayernum); -} -#endif - -void objectivesCheckAll(void) -{ - s32 availableindex = 0; - s32 i; - char buffer[50] = ""; - - if (!g_ObjectiveChecksDisabled) { - for (i = 0; i <= g_ObjectiveLastIndex; i++) { - s32 status = objectiveCheck(i); - - if (g_ObjectiveStatuses[i] != status) { - g_ObjectiveStatuses[i] = status; - - if (objectiveGetDifficultyBits(i) & (1 << lvGetDifficulty())) { -#if VERSION >= VERSION_JPN_FINAL - u8 jpnstr[] = {0, 0, 0}; - jpnstr[0] = 0x80; - jpnstr[1] = 0x80 | (0x11 + availableindex); - sprintf(buffer, "%s %s: ", langGet(L_MISC_044), jpnstr); // "Objective" -#else - sprintf(buffer, "%s %d: ", langGet(L_MISC_044), availableindex + 1); // "Objective" -#endif - -#if VERSION >= VERSION_NTSC_1_0 - // NTSC 1.0 and above shows objective messages to everyone, - // while beta only shows them to the current player. - if (status == OBJECTIVE_COMPLETE) { - strcat(buffer, langGet(L_MISC_045)); // "Completed" - objectivesShowHudmsg(buffer, HUDMSGTYPE_OBJECTIVECOMPLETE); - } else if (status == OBJECTIVE_INCOMPLETE) { - strcat(buffer, langGet(L_MISC_046)); // "Incomplete" - objectivesShowHudmsg(buffer, HUDMSGTYPE_OBJECTIVECOMPLETE); - } else if (status == OBJECTIVE_FAILED) { - strcat(buffer, langGet(L_MISC_047)); // "Failed" - objectivesShowHudmsg(buffer, HUDMSGTYPE_OBJECTIVEFAILED); - } -#else - if (status == OBJECTIVE_COMPLETE) { - strcat(buffer, langGet(L_MISC_045)); // "Completed" - hudmsgCreateWithFlags(buffer, HUDMSGTYPE_OBJECTIVECOMPLETE, HUDMSGFLAG_ALLOWDUPES); - } else if (status == OBJECTIVE_INCOMPLETE) { - strcat(buffer, langGet(L_MISC_046)); // "Incomplete" - hudmsgCreateWithFlags(buffer, HUDMSGTYPE_OBJECTIVECOMPLETE, HUDMSGFLAG_ALLOWDUPES); - } else if (status == OBJECTIVE_FAILED) { - strcat(buffer, langGet(L_MISC_047)); // "Failed" - hudmsgCreateWithFlags(buffer, HUDMSGTYPE_OBJECTIVEFAILED, HUDMSGFLAG_ALLOWDUPES); - } -#endif - } - } - - if (objectiveGetDifficultyBits(i) & (1 << lvGetDifficulty())) { - availableindex++; - } - } - } -} - -void objectiveCheckRoomEntered(s32 currentroom) -{ - struct criteria_roomentered *criteria = g_RoomEnteredCriterias; - - while (criteria) { - if (criteria->status == OBJECTIVE_INCOMPLETE) { - s32 room = chrGetPadRoom(NULL, criteria->pad); - - if (room >= 0 && room == currentroom) { - criteria->status = OBJECTIVE_COMPLETE; - } - } - - criteria = criteria->next; - } -} - -void objectiveCheckThrowInRoom(s32 arg0, s16 *inrooms) -{ - struct criteria_throwinroom *criteria = g_ThrowInRoomCriterias; - - while (criteria) { - if (criteria->status == OBJECTIVE_INCOMPLETE && criteria->unk04 == arg0) { - s32 room = chrGetPadRoom(NULL, criteria->pad); - - if (room >= 0) { - s16 requirerooms[2]; - requirerooms[0] = room; - requirerooms[1] = -1; - - if (arrayIntersects(requirerooms, inrooms)) { - criteria->status = OBJECTIVE_COMPLETE; - } - } - } - - criteria = criteria->next; - } -} - -void objectiveCheckHolograph(f32 maxdist) -{ - struct criteria_holograph *criteria = g_HolographCriterias; - - while (criteria) { - if (g_Vars.stagenum == STAGE_CITRAINING) { - criteria->status = OBJECTIVE_INCOMPLETE; - } - - if (criteria->status == OBJECTIVE_INCOMPLETE) { - struct defaultobj *obj = objFindByTagId(criteria->obj); - - if (obj && obj->prop - && (obj->prop->flags & PROPFLAG_ONTHISSCREENTHISTICK) - && obj->prop->z >= 0 - && objIsHealthy(obj)) { - struct coord sp9c; - f32 sp94[2]; - f32 sp8c[2]; - f32 dist = -1; - - if (maxdist != 0.0f) { - f32 xdiff = obj->prop->pos.x - g_Vars.currentplayer->cam_pos.x; - f32 zdiff = obj->prop->pos.z - g_Vars.currentplayer->cam_pos.z; - dist = xdiff * xdiff + zdiff * zdiff; - maxdist = maxdist * maxdist; - } - - if (dist < maxdist && func0f0899dc(obj->prop, &sp9c, sp94, sp8c)) { - f32 sp78[2]; - f32 sp70[2]; - func0f06803c(&sp9c, sp94, sp8c, sp78, sp70); - - if (sp78[0] > camGetScreenLeft() - && sp78[0] < camGetScreenLeft() + camGetScreenWidth() - && sp70[0] > camGetScreenLeft() - && sp70[0] < camGetScreenLeft() + camGetScreenWidth() - && sp78[1] > camGetScreenTop() - && sp78[1] < camGetScreenTop() + camGetScreenHeight() - && sp70[1] > camGetScreenTop() - && sp70[1] < camGetScreenTop() + camGetScreenHeight()) { - criteria->status = OBJECTIVE_COMPLETE; - } - } - } - } - - criteria = criteria->next; - } -} diff --git a/src/game/objectivesreset.c b/src/game/objectivesreset.c deleted file mode 100644 index 495a2d1de..000000000 --- a/src/game/objectivesreset.c +++ /dev/null @@ -1,71 +0,0 @@ -#include -#include "constants.h" -#include "game/inv.h" -#include "bss.h" -#include "lib/main.h" -#include "data.h" -#include "types.h" - -void objectivesReset(void) -{ - s32 i; - - if (mainGetStageNum() < STAGE_TITLE) { - g_ObjectiveLastIndex = -1; - - for (i = 0; i < ARRAYCOUNT(g_ObjectiveStatuses); i++) { - g_ObjectiveStatuses[i] = 0; - } - } - - g_ObjectiveChecksDisabled = false; - - for (i = 0; i < ARRAYCOUNT(g_Objectives); i++) { - g_Objectives[i] = NULL; - } - - g_TagsLinkedList = NULL; - g_BriefingObjs = NULL; - g_RoomEnteredCriterias = NULL; - g_ThrowInRoomCriterias = NULL; - g_HolographCriterias = NULL; -} - -void tagInsert(struct tag *tag) -{ - tag->next = g_TagsLinkedList; - g_TagsLinkedList = tag; -} - -void briefingInsert(struct briefingobj *briefing) -{ - briefing->next = g_BriefingObjs; - g_BriefingObjs = briefing; -} - -void objectiveInsert(struct objective *objective) -{ - g_Objectives[objective->index] = objective; - - if (g_ObjectiveLastIndex < objective->index) { - g_ObjectiveLastIndex = objective->index; - } -} - -void objectiveAddRoomEnteredCriteria(struct criteria_roomentered *criteria) -{ - criteria->next = g_RoomEnteredCriterias; - g_RoomEnteredCriterias = criteria; -} - -void objectiveAddThrowInRoomCriteria(struct criteria_throwinroom *criteria) -{ - criteria->next = g_ThrowInRoomCriterias; - g_ThrowInRoomCriterias = criteria; -} - -void objectiveAddHolographCriteria(struct criteria_holograph *criteria) -{ - criteria->next = g_HolographCriterias; - g_HolographCriterias = criteria; -} diff --git a/src/game/objectivesstop.c b/src/game/objectivesstop.c deleted file mode 100644 index 190a7d18e..000000000 --- a/src/game/objectivesstop.c +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include "constants.h" -#include "bss.h" -#include "data.h" -#include "types.h" - -void objectivesStop(void) -{ - s32 i; - - for (i = 0; i < ARRAYCOUNT(g_Objectives); i++) { - if (g_Objectives[i] - && (g_Objectives[i]->flags & OBJECTIVEFLAG_AUTOCOMPLETE) - && g_ObjectiveStatuses[i] != OBJECTIVE_FAILED) { - g_ObjectiveStatuses[i] = OBJECTIVE_COMPLETE; - } - } -} diff --git a/src/game/player.c b/src/game/player.c index 0e9021fba..0f4b6c75c 100644 --- a/src/game/player.c +++ b/src/game/player.c @@ -11,7 +11,6 @@ #include "game/body.h" #include "game/prop.h" #include "game/propsnd.h" -#include "game/objectives.h" #include "game/atan2f.h" #include "game/quaternion.h" #include "game/bondgun.h" @@ -4393,10 +4392,6 @@ Gfx *playerRenderHud(Gfx *gdl) gdl = playerDrawStoredFade(gdl); } - if (g_Vars.stagenum == STAGE_ESCAPE) { - gdl = gasRender(gdl); - } - return gdl; } @@ -4414,10 +4409,6 @@ Gfx *playerRenderHud(Gfx *gdl) gdl = nbombRenderOverlay(gdl); } - if (g_Vars.stagenum == STAGE_ESCAPE) { - gdl = gasRender(gdl); - } - gdl = playerRenderShield(gdl); // Adjust eyes shutting @@ -4474,10 +4465,6 @@ Gfx *playerRenderHud(Gfx *gdl) gdl = playerRenderHealthBar(gdl); } - if (g_Vars.normmplayerisrunning == false) { - objectivesCheckAll(); - } - if (g_Vars.currentplayer->isdead) { g_Vars.currentplayer->coopcanrestart = false; diff --git a/src/game/portal.c b/src/game/portal.c index 93b0efd07..3adbfcc98 100644 --- a/src/game/portal.c +++ b/src/game/portal.c @@ -10,7 +10,6 @@ #include "game/body.h" #include "game/prop.h" #include "game/propsnd.h" -#include "game/objectives.h" #include "game/atan2f.h" #include "game/quaternion.h" #include "game/bondgun.h" diff --git a/src/game/prop.c b/src/game/prop.c index 06064a2d5..c495186b5 100644 --- a/src/game/prop.c +++ b/src/game/prop.c @@ -7,7 +7,6 @@ #include "game/chr.h" #include "game/prop.h" #include "game/propsnd.h" -#include "game/objectives.h" #include "game/floor.h" #include "game/ceil.h" #include "game/bondgun.h" @@ -2248,13 +2247,6 @@ void propsTickPadEffects(void) propsnd0f0939f8(NULL, NULL, propsndGetRandomSparkSound(), -1, -1, 0, 0, 0, &pad.pos, -1, rooms, -1, -1, -1, -1); } break; - case PADEFFECT_OUTROSMOKE: - if (g_Vars.tickmode != TICKMODE_CUTSCENE || !objectiveIsAllComplete()) { - // @bug: This should be a break rather than a return. - // Because of this, subsequent pad effects won't tick. - return; - } - // fall-through case PADEFFECT_SPLASH: case PADEFFECT_SMOKE: type = SMOKETYPE_WATER; diff --git a/src/game/propobj.c b/src/game/propobj.c index 110134c99..ec8faaaa1 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -10,7 +10,6 @@ #include "game/prop.h" #include "game/setuputils.h" #include "game/propsnd.h" -#include "game/objectives.h" #include "game/game_096360.h" #include "game/atan2f.h" #include "game/acosfasinf.h" @@ -4101,8 +4100,6 @@ void objLand(struct prop *prop, struct coord *arg1, struct coord *arg2, bool *em obj->flags2 |= OBJFLAG2_IMMUNETOGUNFIRE; } - objectiveCheckThrowInRoom(weapon->weaponnum, prop->rooms); - if (weapon->weaponnum == WEAPON_BOLT) { boltLand(weapon, arg1); } else if (weapon->weaponnum == WEAPON_COMBATKNIFE) { @@ -8360,11 +8357,6 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) if (stop) { objFreeProjectile(obj); - - if (obj->type == OBJTYPE_WEAPON) { - struct weaponobj *weapon = (struct weaponobj *) obj; - objectiveCheckThrowInRoom(weapon->weaponnum, prop->rooms); - } } if (result) { @@ -11959,17 +11951,6 @@ s32 objTickPlayer(struct prop *prop) model->anim = NULL; mtx00015be4(camGetProjectionMtxF(), model->matrices, &sp248); mtx4ToMtx3(&sp248, obj->realrot); - tagnum = objGetTagNum(obj); - - if (tagnum >= 0) { - numchrs = chrsGetNumSlots(); - - for (i = 0; i < numchrs; i++) { - if (g_ChrSlots[i].myspecial == tagnum) { - g_ChrSlots[i].myspecial = -1; - } - } - } } prop->pos.x = sp236.x; @@ -16685,25 +16666,6 @@ void objHit(struct shotdata *shotdata, struct hit *hit) } } -u32 propobjGetCiTagId(struct prop *prop) -{ - if (prop && g_Vars.stagenum == STAGE_CITRAINING) { - u8 tags[8] = { 0x0e, 0x0f, 0x10, 0x47, 0x46, 0x45, 0x1b, 0x7f }; - struct defaultobj *obj = prop->obj; - u32 i; - - for (i = 0; i != 8; i++) { - struct defaultobj *taggedobj = objFindByTagId(tags[i]); - - if (obj == taggedobj) { - return tags[i]; - } - } - } - - return 0; -} - bool objIsHealthy(struct defaultobj *obj) { return objGetDestroyedLevel(obj) == 0; @@ -16715,9 +16677,7 @@ bool objTestForInteract(struct prop *prop) struct defaultobj *obj = prop->obj; bool maybe = false; - if (propobjGetCiTagId(prop)) { - maybe = true; - } else if (obj->type == OBJTYPE_ALARM + if (obj->type == OBJTYPE_ALARM || (obj->flags & OBJFLAG_THROWNLAPTOP) || (obj->flags3 & (OBJFLAG3_HTMTERMINAL | OBJFLAG3_INTERACTABLE)) || (obj->hidden & (OBJHFLAG_LIFTDOOR | OBJHFLAG_00000002))) { diff --git a/src/game/proptick.c b/src/game/proptick.c index 877c3de40..e7d981846 100644 --- a/src/game/proptick.c +++ b/src/game/proptick.c @@ -6,7 +6,6 @@ #include "game/chr.h" #include "game/prop.h" #include "game/propsnd.h" -#include "game/objectives.h" #include "game/game_096360.h" #include "game/bondgun.h" #include "game/gunfx.h" diff --git a/src/game/setup.c b/src/game/setup.c index 2510faea1..1667c54a9 100644 --- a/src/game/setup.c +++ b/src/game/setup.c @@ -2,7 +2,6 @@ #include "constants.h" #include "game/game_00b820.h" #include "game/setup.h" -#include "game/objectives.h" #include "game/playerreset.h" #include "game/botmgr.h" #include "game/chr.h" @@ -1815,19 +1814,6 @@ void setupCreateProps(s32 stagenum) heli->nextstep = 0; } break; - case OBJTYPE_TAG: - { - struct tag *tag = (struct tag *)obj; - struct defaultobj *taggedobj = setupGetObjByCmdIndex(index + tag->cmdoffset); - tag->obj = taggedobj; - - if (taggedobj) { - taggedobj->hidden |= OBJHFLAG_TAGGED; - } - - tagInsert(tag); - } - break; case OBJTYPE_RENAMEOBJ: { struct textoverride *override = (struct textoverride *)obj; @@ -1841,26 +1827,6 @@ void setupCreateProps(s32 stagenum) invInsertTextOverride(override); } break; - case OBJTYPE_BRIEFING: - { - struct briefingobj *briefing = (struct briefingobj *)obj; - s32 wanttype = BRIEFINGTYPE_TEXT_PA; - - briefingInsert(briefing); - - if (lvGetDifficulty() == DIFF_A) { - wanttype = BRIEFINGTYPE_TEXT_A; - } - - if (lvGetDifficulty() == DIFF_SA) { - wanttype = BRIEFINGTYPE_TEXT_SA; - } - - if (briefing->type == wanttype) { - g_Briefing.briefingtextnum = briefing->text; - } - } - break; case OBJTYPE_CAMERAPOS: { struct cameraposobj *camera = (struct cameraposobj *)obj; @@ -1871,27 +1837,6 @@ void setupCreateProps(s32 stagenum) camera->verta = *(s32 *)&camera->verta / 65536.0f; } break; - case OBJTYPE_BEGINOBJECTIVE: - { - struct objective *objective = (struct objective *)obj; - - objectiveInsert(objective); - - if ((u32)objective->index < 7) { - g_Briefing.objectivenames[objective->index] = objective->text; - g_Briefing.objectivedifficulties[objective->index] = objective->difficulties; - } - } - break; - case OBJECTIVETYPE_ENTERROOM: - objectiveAddRoomEnteredCriteria((struct criteria_roomentered *)obj); - break; - case OBJECTIVETYPE_THROWINROOM: - objectiveAddThrowInRoomCriteria((struct criteria_throwinroom *)obj); - break; - case OBJECTIVETYPE_HOLOGRAPH: - objectiveAddHolographCriteria((struct criteria_holograph *)obj); - break; case OBJTYPE_PADEFFECT: { struct padeffectobj *padeffect = (struct padeffectobj *)obj; diff --git a/src/lib/main.c b/src/lib/main.c index 782067b95..8c1cbf8e8 100644 --- a/src/lib/main.c +++ b/src/lib/main.c @@ -23,7 +23,6 @@ #include "game/challenge.h" #include "game/title.h" #include "game/pdmode.h" -#include "game/objectives.h" #include "game/playermgr.h" #include "game/game_1531a0.h" #include "game/gfxmemory.h" @@ -1960,8 +1959,6 @@ s32 mainGetStageNum(void) void func0000e990(void) { - objectivesCheckAll(); - objectivesDisableChecking(); mainEndStage(); }