mirror of
https://github.com/perfect-dark-pc-port/perfect_dark.git
synced 2026-10-24 00:02:43 +02:00
Attempt to decompile activemenuRender
This commit is contained in:
1 parent
60c7b619d9
commit
48498eb313
6 files changed
+446
-26
No files matched your search
+435
-19
@@ -22,6 +22,7 @@
|
||||
#include "game/game_166e40.h"
|
||||
#include "game/game_190260.h"
|
||||
#include "game/game_197600.h"
|
||||
#include "game/gfxmemory.h"
|
||||
#include "game/training.h"
|
||||
#include "game/lang.h"
|
||||
#include "game/mplayer.h"
|
||||
@@ -1070,14 +1071,14 @@ bool activemenuIsCramped(void)
|
||||
|| (PLAYERCOUNT() == 2 && optionsGetScreenSplit() == SCREENSPLIT_VERTICAL);
|
||||
}
|
||||
|
||||
void activemenuCalculateSlotPosition(s16 arg0, s16 arg1, s16 *x, s16 *y)
|
||||
void activemenuCalculateSlotPosition(s16 column, s16 row, s16 *x, s16 *y)
|
||||
{
|
||||
s32 playercount = PLAYERCOUNT();
|
||||
|
||||
*x = g_ActiveMenus[g_ActiveMenuIndex].xradius * (arg0 - 1);
|
||||
*y = arg1 * 50 - 50;
|
||||
*x = g_ActiveMenus[g_ActiveMenuIndex].xradius * (column - 1);
|
||||
*y = row * 50 - 50;
|
||||
|
||||
if (arg0 != 1 && arg1 != 1) {
|
||||
if (column != 1 && row != 1) {
|
||||
*x = *x / 2;
|
||||
*y = *y / 2;
|
||||
}
|
||||
@@ -1085,22 +1086,22 @@ void activemenuCalculateSlotPosition(s16 arg0, s16 arg1, s16 *x, s16 *y)
|
||||
if (activemenuIsCramped()) {
|
||||
s32 sVar6 = 1;
|
||||
|
||||
if (arg1 == 1) {
|
||||
if (row == 1) {
|
||||
sVar6 = 3;
|
||||
}
|
||||
|
||||
if (arg0 == 0) {
|
||||
if (column == 0) {
|
||||
*x = -(g_ActiveMenus[g_ActiveMenuIndex].slotwidth / 2) - sVar6;
|
||||
} else if (arg0 == 2) {
|
||||
} else if (column == 2) {
|
||||
*x = g_ActiveMenus[g_ActiveMenuIndex].slotwidth / 2 + sVar6;
|
||||
}
|
||||
} else {
|
||||
if (playercount >= 2) {
|
||||
if (arg1 == 1 && !activemenuIsCramped()) {
|
||||
if (row == 1 && !activemenuIsCramped()) {
|
||||
*x = (*x * 6) / 7;
|
||||
}
|
||||
} else {
|
||||
if (playercount >= 3 && arg1 == 1 && !activemenuIsCramped()) {
|
||||
if (playercount >= 3 && row == 1 && !activemenuIsCramped()) {
|
||||
*x = (*x * 6) / 14;
|
||||
}
|
||||
}
|
||||
@@ -1125,7 +1126,7 @@ void activemenuCalculateSlotPosition(s16 arg0, s16 arg1, s16 *x, s16 *y)
|
||||
}
|
||||
}
|
||||
|
||||
Gfx *activemenuRenderText(Gfx *gdl, char *text, s32 arg2, s16 left, s16 top)
|
||||
Gfx *activemenuRenderText(Gfx *gdl, char *text, u32 colour, s16 left, s16 top)
|
||||
{
|
||||
s32 x;
|
||||
s32 y;
|
||||
@@ -1136,7 +1137,7 @@ Gfx *activemenuRenderText(Gfx *gdl, char *text, s32 arg2, s16 left, s16 top)
|
||||
|
||||
x = left - (textwidth / 2);
|
||||
y = top - 4;
|
||||
gdl = textRenderProjected(gdl, &x, &y, text, g_ActiveMenuFont1, g_ActiveMenuFont2, arg2, 320, 240, 0, 0);
|
||||
gdl = textRenderProjected(gdl, &x, &y, text, g_ActiveMenuFont1, g_ActiveMenuFont2, colour, 320, 240, 0, 0);
|
||||
|
||||
return gdl;
|
||||
}
|
||||
@@ -1254,9 +1255,7 @@ const char var7f1b2be0[] = "Put guntype %d in slot %d\n";
|
||||
const char var7f1b2bfc[] = "ActiveMenu: Two or more equipped items of guntype %d\n";
|
||||
const char var7f1b2c34[] = "FAV: Added gun %d to slot %d\n";
|
||||
|
||||
u32 var800719a0 = 0x00010203;
|
||||
u32 var800719a4 = 0x04050607;
|
||||
u32 var800719a8 = 0x08000000;
|
||||
u8 var800719a0[][3] = { {0, 1, 2}, {3, 4, 5}, {6, 7, 8} };
|
||||
|
||||
Gfx *activemenuRenderSlot(Gfx *gdl, char *text, s16 x, s16 y, s32 mode, s32 flags)
|
||||
{
|
||||
@@ -1290,11 +1289,11 @@ Gfx *activemenuRenderSlot(Gfx *gdl, char *text, s16 x, s16 y, s32 mode, s32 flag
|
||||
// Render background colour
|
||||
colour = (u32)(g_ActiveMenus[g_ActiveMenuIndex].alphafrac * (ibcol & 0xff)) | (ibcol & 0xffffff00);
|
||||
|
||||
if (mode == 1) {
|
||||
if (mode == AMSLOTMODE_FOCUSED) {
|
||||
colour &= 0x000000ff;
|
||||
}
|
||||
|
||||
if (mode == 2 || (flags & AMSLOTFLAG_CURRENT)) {
|
||||
if (mode == AMSLOTMODE_CURRENT || (flags & AMSLOTFLAG_CURRENT)) {
|
||||
colour &= 0x000000ff;
|
||||
}
|
||||
|
||||
@@ -1323,7 +1322,7 @@ Gfx *activemenuRenderSlot(Gfx *gdl, char *text, s16 x, s16 y, s32 mode, s32 flag
|
||||
colour &= 0x000000ff;
|
||||
}
|
||||
|
||||
if (mode == 2 || (flags & AMSLOTFLAG_CURRENT)) {
|
||||
if (mode == AMSLOTMODE_CURRENT || (flags & AMSLOTFLAG_CURRENT)) {
|
||||
colour = 0xffffff8f;
|
||||
}
|
||||
|
||||
@@ -1368,7 +1367,7 @@ Gfx *activemenuRenderSlot(Gfx *gdl, char *text, s16 x, s16 y, s32 mode, s32 flag
|
||||
// Render text
|
||||
colour = defcol;
|
||||
|
||||
if (mode == 2 || (flags & AMSLOTFLAG_CURRENT)) {
|
||||
if (mode == AMSLOTMODE_CURRENT || (flags & AMSLOTFLAG_CURRENT)) {
|
||||
colour = 0xffffffff;
|
||||
}
|
||||
|
||||
@@ -1388,7 +1387,7 @@ Gfx *activemenuRenderSlot(Gfx *gdl, char *text, s16 x, s16 y, s32 mode, s32 flag
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0f100ad0
|
||||
glabel activemenuRender
|
||||
/* f100ad0: 27bdfe28 */ addiu $sp,$sp,-472
|
||||
/* f100ad4: 3c0e8007 */ lui $t6,%hi(g_ViMode)
|
||||
/* f100ad8: 8dce06c8 */ lw $t6,%lo(g_ViMode)($t6)
|
||||
@@ -2977,3 +2976,420 @@ glabel func0f100ad0
|
||||
/* f10222c: 00000000 */ nop
|
||||
);
|
||||
|
||||
// Mismatch: Health bar rectangles near the end are just hopeless.
|
||||
//Gfx *activemenuRender(Gfx *gdl)
|
||||
//{
|
||||
// u32 mode;
|
||||
// u32 flags; // 1d0
|
||||
// u32 *colours;
|
||||
// struct gfxvtx *vertices;
|
||||
// s32 mpchrnum; // 1c4
|
||||
// s16 column;
|
||||
// s16 row;
|
||||
// u32 colour;
|
||||
// s16 xb; // 1ba
|
||||
// s16 yb; // 1b8
|
||||
// s16 xa; // 182
|
||||
// s16 ya; // 180
|
||||
// char text1[32]; // 15c
|
||||
// s32 textheight; // 13c
|
||||
// s32 textwidth; // 138
|
||||
// char text2[32]; // 118
|
||||
// u32 flags2; // 114
|
||||
// struct chrdata *chr;
|
||||
// s16 tmp1;
|
||||
// s16 tmp2;
|
||||
// s32 buddynum;
|
||||
//
|
||||
// if (g_ViMode == VIMODE_HIRES) {
|
||||
// g_ScreenWidthMultiplier = 2;
|
||||
// } else {
|
||||
// g_ScreenWidthMultiplier = 1;
|
||||
// }
|
||||
//
|
||||
// g_ActiveMenuIndex = g_Vars.currentplayernum;
|
||||
// g_Vars.currentplayer->commandingaibot = NULL;
|
||||
//
|
||||
// if (g_Vars.currentplayer->activemenumode != AMMODE_CLOSED) {
|
||||
// // Draw diamond
|
||||
// gdl = func0f153628(gdl);
|
||||
//
|
||||
// if (g_Vars.normmplayerisrunning
|
||||
// && g_ActiveMenus[g_ActiveMenuIndex].screenindex >= 2) {
|
||||
// mpchrnum = g_Vars.currentplayer->aibuddynums[g_ActiveMenus[g_ActiveMenuIndex].screenindex - 2];
|
||||
// }
|
||||
//
|
||||
// if (g_ActiveMenus[g_ActiveMenuIndex].dstx == -123) {
|
||||
// activemenuCalculateSlotPosition(
|
||||
// g_ActiveMenus[g_ActiveMenuIndex].slotnum % 3,
|
||||
// g_ActiveMenus[g_ActiveMenuIndex].slotnum / 3,
|
||||
// &g_ActiveMenus[g_ActiveMenuIndex].selx,
|
||||
// &g_ActiveMenus[g_ActiveMenuIndex].sely);
|
||||
// g_ActiveMenus[g_ActiveMenuIndex].dstx = g_ActiveMenus[g_ActiveMenuIndex].selx;
|
||||
// g_ActiveMenus[g_ActiveMenuIndex].dsty = g_ActiveMenus[g_ActiveMenuIndex].sely;
|
||||
// } else {
|
||||
// activemenuCalculateSlotPosition(
|
||||
// g_ActiveMenus[g_ActiveMenuIndex].slotnum % 3,
|
||||
// g_ActiveMenus[g_ActiveMenuIndex].slotnum / 3,
|
||||
// &g_ActiveMenus[g_ActiveMenuIndex].dstx,
|
||||
// &g_ActiveMenus[g_ActiveMenuIndex].dsty);
|
||||
// }
|
||||
//
|
||||
// gdl = func0f0d479c(gdl);
|
||||
//
|
||||
// colours = gfxAllocateColours(2);
|
||||
// vertices = gfxAllocateVertices(8);
|
||||
//
|
||||
// gDPPipeSync(gdl++);
|
||||
// gDPSetCycleType(gdl++, G_CYC_1CYCLE);
|
||||
// gDPSetAlphaCompare(gdl++, G_AC_NONE);
|
||||
// gDPSetAlphaDither(gdl++, G_AD_NOISE);
|
||||
// gDPSetCombineMode(gdl++, G_CC_MODULATEI, G_CC_MODULATEI);
|
||||
// gSPClearGeometryMode(gdl++, G_CULL_BOTH);
|
||||
//
|
||||
// func0f0b39c0(&gdl, NULL, 2, 0, 2, 1, 0);
|
||||
//
|
||||
// gDPSetRenderMode(gdl++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
|
||||
//
|
||||
// // Top
|
||||
// activemenuCalculateSlotPosition(1, 0, &xb, &yb);
|
||||
//
|
||||
// vertices[0].x = xb * 10;
|
||||
// vertices[0].y = yb * 10;
|
||||
// vertices[0].z = -10;
|
||||
//
|
||||
// // Right
|
||||
// activemenuCalculateSlotPosition(2, 1, &xb, &yb);
|
||||
//
|
||||
// vertices[1].x = xb * 10;
|
||||
// vertices[1].y = yb * 10;
|
||||
// vertices[1].z = -10;
|
||||
//
|
||||
// // Bottom
|
||||
// activemenuCalculateSlotPosition(1, 2, &xb, &yb);
|
||||
//
|
||||
// vertices[2].x = xb * 10;
|
||||
// vertices[2].y = yb * 10;
|
||||
// vertices[2].z = -10;
|
||||
//
|
||||
// // Left
|
||||
// activemenuCalculateSlotPosition(0, 1, &xb, &yb);
|
||||
//
|
||||
// vertices[3].x = xb * 10;
|
||||
// vertices[3].y = yb * 10;
|
||||
// vertices[3].z = -10;
|
||||
//
|
||||
// vertices[4].z = -10;
|
||||
// vertices[5].z = -10;
|
||||
// vertices[6].z = -10;
|
||||
// vertices[7].z = -10;
|
||||
//
|
||||
// tmp2 = (vertices[1].x - vertices[3].x) / 8;
|
||||
// tmp1 = (vertices[2].y - vertices[0].y) / 8;
|
||||
//
|
||||
// vertices[4].x = vertices[0].x;
|
||||
// vertices[4].y = vertices[0].y + tmp1;
|
||||
// vertices[5].x = vertices[1].x - tmp2;
|
||||
// vertices[5].y = vertices[1].y;
|
||||
// vertices[6].x = vertices[2].x;
|
||||
// vertices[6].y = vertices[2].y - tmp1;
|
||||
// vertices[7].x = vertices[3].x + tmp2;
|
||||
// vertices[7].y = vertices[3].y;
|
||||
//
|
||||
// vertices[0].s = 0;
|
||||
// vertices[1].s = 0;
|
||||
// vertices[2].s = 0;
|
||||
// vertices[3].s = 0;
|
||||
// vertices[4].s = 4;
|
||||
// vertices[5].s = 4;
|
||||
// vertices[6].s = 4;
|
||||
// vertices[7].s = 4;
|
||||
//
|
||||
// colours[0] = 0x22222200;
|
||||
// colours[1] = 0x0000004f;
|
||||
//
|
||||
// gDPSetColorArray(gdl++, osVirtualToPhysical(colours), 2);
|
||||
// gDPSetVerticeArray(gdl++, osVirtualToPhysical(vertices), 8);
|
||||
//
|
||||
// gDPTri2(gdl++, 4, 5, 6, 6, 7, 4);
|
||||
// gDPTri4(gdl++, 0, 4, 7, 7, 3, 0, 0, 1, 5, 5, 4, 0);
|
||||
// gDPTri4(gdl++, 1, 2, 6, 6, 5, 1, 6, 2, 3, 3, 7, 6);
|
||||
//
|
||||
// gdl = func0f0d49c8(gdl);
|
||||
//
|
||||
// // Draw slots
|
||||
// for (column = 0; column < 3; column++) {
|
||||
// for (row = 0; row < 3; row++) {
|
||||
// // 06c
|
||||
// mode = AMSLOTMODE_DEFAULT;
|
||||
// activemenuCalculateSlotPosition(column, row, &xa, &ya);
|
||||
// flags = 0;
|
||||
//
|
||||
// // 0a0
|
||||
// if (column + row * 3 == g_ActiveMenus[g_ActiveMenuIndex].slotnum) {
|
||||
// mode = AMSLOTMODE_FOCUSED;
|
||||
// }
|
||||
//
|
||||
// // 0b0
|
||||
// if (g_MissionConfig.iscoop
|
||||
// && (buddynum = activemenuGetFirstBuddyIndex(), buddynum >= 0)) {
|
||||
// if (mode == AMSLOTMODE_DEFAULT && g_ActiveMenus[g_ActiveMenuIndex].screenindex >= 2) {
|
||||
// struct chrdata *chr = g_Vars.aibuddies[buddynum]->chr;
|
||||
//
|
||||
// if (var800719a0[row][column] == 7) {
|
||||
// if (chr->hidden & CHRHFLAG_PASSIVE) {
|
||||
// mode = AMSLOTMODE_CURRENT;
|
||||
// }
|
||||
// } else if (var800719a0[row][column] == 1) {
|
||||
// if ((chr->hidden & CHRHFLAG_PASSIVE) == 0) {
|
||||
// mode = AMSLOTMODE_CURRENT;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// if (g_Vars.normmplayerisrunning
|
||||
// && mode == AMSLOTMODE_DEFAULT
|
||||
// && g_ActiveMenus[g_ActiveMenuIndex].screenindex >= 2) {
|
||||
// s32 a = g_ActiveMenuMpBotCommands[var800719a0[row][column]];
|
||||
// s32 b = g_MpPlayerChrs[mpchrnum]->aibot->command;
|
||||
//
|
||||
// if (a == b) {
|
||||
// mode = AMSLOTMODE_CURRENT;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// colour = 0xffffffff;
|
||||
//
|
||||
// if (g_Vars.currentplayer->activemenumode == AMMODE_EDIT) {
|
||||
// colour = 0x4f4f4f7f;
|
||||
// }
|
||||
//
|
||||
// activemenuGetSlotDetails(column + row * 3, &flags, text1);
|
||||
//
|
||||
// if (column == 1 && row == 1) {
|
||||
// if (!activemenuIsCramped()) {
|
||||
// gdl = activemenuRenderText(gdl, text1, colour, xa, ya);
|
||||
// }
|
||||
// } else {
|
||||
// gdl = activemenuRenderSlot(gdl, text1, xa, ya, mode, flags);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // Render AI bot name and weapon
|
||||
// if (!(g_MissionConfig.iscoop && activemenuGetFirstBuddyIndex() >= 0)
|
||||
// && g_Vars.normmplayerisrunning
|
||||
// && g_ActiveMenus[g_ActiveMenuIndex].screenindex >= 2) {
|
||||
// gdl = activemenuRenderAibotInfo(gdl, g_ActiveMenus[g_ActiveMenuIndex].screenindex - 2);
|
||||
// }
|
||||
//
|
||||
// // 131c
|
||||
// // Note: the column and row values will never be 1 here, so this
|
||||
// // condition always passes. Looks like they intended to skip drawing the
|
||||
// // selection box on the simulants screen if the middle box was selected.
|
||||
// if (g_ActiveMenus[g_ActiveMenuIndex].screenindex < 2 || column != 1 || row != 1) {
|
||||
// // Render selection
|
||||
// s32 halfwidth;
|
||||
// s32 above = 6;
|
||||
// s32 below = 6;
|
||||
// u32 tmp;
|
||||
//
|
||||
// if (PLAYERCOUNT() >= 2) {
|
||||
// above = 5;
|
||||
// below = 3;
|
||||
// }
|
||||
//
|
||||
// tmp = (sinf(g_ActiveMenus[g_ActiveMenuIndex].selpulse) + 1) * 127;
|
||||
// colour = 0xff0000ff | tmp << 8 | tmp << 16;
|
||||
//
|
||||
// if (g_Vars.currentplayer->activemenumode == AMMODE_EDIT) {
|
||||
// colour = 0x4f4f4f7f;
|
||||
// }
|
||||
//
|
||||
// gdl = gfxSetPrimColour(gdl, colour);
|
||||
//
|
||||
// halfwidth = g_ActiveMenus[g_ActiveMenuIndex].slotwidth / 2;
|
||||
//
|
||||
// if (g_ActiveMenus[g_ActiveMenuIndex].slotnum == 4) {
|
||||
// if (activemenuIsCramped()) {
|
||||
// halfwidth = 1;
|
||||
// above = 2;
|
||||
// below = 0;
|
||||
// } else if (PLAYERCOUNT() >= 2) {
|
||||
// activemenuGetSlotDetails(4, &flags2, text2);
|
||||
// textMeasure(&textheight, &textwidth, text2, g_ActiveMenuFont1, g_ActiveMenuFont2, 0);
|
||||
//
|
||||
// halfwidth = textwidth / 2 + 2;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // Top
|
||||
// gDPFillRectangle(gdl++,
|
||||
// (g_ActiveMenus[g_ActiveMenuIndex].selx - halfwidth) * g_ScreenWidthMultiplier,
|
||||
// g_ActiveMenus[g_ActiveMenuIndex].sely - above,
|
||||
// (g_ActiveMenus[g_ActiveMenuIndex].selx + halfwidth + 1) * g_ScreenWidthMultiplier,
|
||||
// g_ActiveMenus[g_ActiveMenuIndex].sely - above + 1);
|
||||
//
|
||||
// // Bottom
|
||||
// gDPFillRectangle(gdl++,
|
||||
// (g_ActiveMenus[g_ActiveMenuIndex].selx - halfwidth) * g_ScreenWidthMultiplier,
|
||||
// g_ActiveMenus[g_ActiveMenuIndex].sely + below,
|
||||
// (g_ActiveMenus[g_ActiveMenuIndex].selx + halfwidth + 1) * g_ScreenWidthMultiplier,
|
||||
// g_ActiveMenus[g_ActiveMenuIndex].sely + below + 1);
|
||||
//
|
||||
// // Left
|
||||
// gDPFillRectangle(gdl++,
|
||||
// (g_ActiveMenus[g_ActiveMenuIndex].selx - halfwidth) * g_ScreenWidthMultiplier,
|
||||
// g_ActiveMenus[g_ActiveMenuIndex].sely - above + 1,
|
||||
// (g_ActiveMenus[g_ActiveMenuIndex].selx - halfwidth + 1) * g_ScreenWidthMultiplier,
|
||||
// g_ActiveMenus[g_ActiveMenuIndex].sely + below);
|
||||
//
|
||||
// // Right
|
||||
// gDPFillRectangle(gdl++,
|
||||
// (g_ActiveMenus[g_ActiveMenuIndex].selx + halfwidth) * g_ScreenWidthMultiplier,
|
||||
// g_ActiveMenus[g_ActiveMenuIndex].sely - above + 1,
|
||||
// (g_ActiveMenus[g_ActiveMenuIndex].selx + halfwidth + 1) * g_ScreenWidthMultiplier,
|
||||
// g_ActiveMenus[g_ActiveMenuIndex].sely + below);
|
||||
//
|
||||
// gdl = func0f153838(gdl);
|
||||
// }
|
||||
//
|
||||
// gdl = func0f153780(gdl);
|
||||
// }
|
||||
//
|
||||
// // 18a4
|
||||
// chr = g_Vars.currentplayer->commandingaibot;
|
||||
//
|
||||
// if (chr) {
|
||||
// // Render health bar
|
||||
// f32 healthfrac = (chr->maxdamage - chr->damage) / chr->maxdamage;
|
||||
// f32 shieldfrac = chr->cshield * 0.125f;
|
||||
// bool redhealth = false;
|
||||
// s32 xoffset;
|
||||
// s32 width;
|
||||
// s32 healthheight;
|
||||
// s32 part1width;
|
||||
// s32 part1left;
|
||||
// s16 y;
|
||||
// s32 part2left;
|
||||
//
|
||||
// // 18e0
|
||||
// if (healthfrac < 0.25f) {
|
||||
// redhealth = true; // s8
|
||||
// }
|
||||
//
|
||||
// width = PLAYERCOUNT() >= 2 ? 48 : 64; // s7
|
||||
// healthheight = PLAYERCOUNT() >= 2 ? 7 : 11; // s5
|
||||
// xoffset = 0; // s2
|
||||
//
|
||||
// if ((PLAYERCOUNT() == 2 && (optionsGetScreenSplit() == SCREENSPLIT_VERTICAL || IS4MB()))
|
||||
// || PLAYERCOUNT() >= 3) {
|
||||
// xoffset = (g_Vars.currentplayernum & 1) == 0 ? 8 : -8;
|
||||
// }
|
||||
//
|
||||
// // 1b0c
|
||||
// if (PLAYERCOUNT() == 1 && optionsGetEffectiveScreenSize() != SCREENSIZE_FULL) {
|
||||
// part1left = viGetViewLeft() / g_ScreenWidthMultiplier + 32; // s0
|
||||
// } else {
|
||||
// // 1bd0
|
||||
// part1left = (s32)((viGetViewWidth() / g_ScreenWidthMultiplier) * 0.5f)
|
||||
// + (s32)(viGetViewLeft() / g_ScreenWidthMultiplier)
|
||||
// - (s32)(width * 0.5f)
|
||||
// + xoffset;
|
||||
// }
|
||||
//
|
||||
// // 1c90
|
||||
// part1width = (s32)(width * 0.25f) - 1; // s2
|
||||
// if (part1width);
|
||||
// part2left = part1left + part1width + 2; // s3
|
||||
//
|
||||
// if (healthfrac < 0) {
|
||||
// healthfrac = 0;
|
||||
// }
|
||||
//
|
||||
// gDPPipeSync(gdl++);
|
||||
// gDPSetCycleType(gdl++, G_CYC_1CYCLE);
|
||||
// gDPSetRenderMode(gdl++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
|
||||
// gDPSetCombineMode(gdl++, G_CC_PRIMITIVE, G_CC_PRIMITIVE);
|
||||
//
|
||||
// // 1d40
|
||||
// y = viGetViewTop() + viGetViewHeight() - (PLAYERCOUNT() >= 2 ? 19 : 34);
|
||||
//
|
||||
// // 1df4
|
||||
// if (redhealth) {
|
||||
// gDPSetPrimColorViaWord(gdl++, 0, 0, 0xff000060);
|
||||
//
|
||||
// // Part 1 red
|
||||
// gDPFillRectangle(gdl++,
|
||||
// ((part1left + part1width - 1) - (s32)(part1width * 0.25f - healthfrac * 4)) * g_ScreenWidthMultiplier,
|
||||
// y,
|
||||
// (part1left + part1width - 1) * g_ScreenWidthMultiplier,
|
||||
// y + healthheight);
|
||||
//
|
||||
// gDPSetPrimColorViaWord(gdl++, 0, 0, 0x00000080);
|
||||
//
|
||||
// // Part 1 black
|
||||
// gDPFillRectangle(gdl++,
|
||||
// part1left * g_ScreenWidthMultiplier,
|
||||
// y,
|
||||
// (part1left + part1width - 1 - (s32)(part1width * 0.25f - healthfrac * 4)) * g_ScreenWidthMultiplier,
|
||||
// y + healthheight);
|
||||
//
|
||||
// // Part 2 black
|
||||
// gDPFillRectangle(gdl++,
|
||||
// part2left * g_ScreenWidthMultiplier,
|
||||
// y,
|
||||
// (part1left + width) * g_ScreenWidthMultiplier,
|
||||
// y + healthheight);
|
||||
// } else {
|
||||
// // 1f70
|
||||
// gDPSetPrimColorViaWord(gdl++, 0, 0, 0x00c00060);
|
||||
//
|
||||
// // Part 1 green
|
||||
// gDPFillRectangle(gdl++,
|
||||
// part1left * g_ScreenWidthMultiplier,
|
||||
// y,
|
||||
// (part1left + part1width - 1) * g_ScreenWidthMultiplier,
|
||||
// y + healthheight);
|
||||
//
|
||||
// // Part 2 green
|
||||
// gDPFillRectangle(gdl++,
|
||||
// part2left * g_ScreenWidthMultiplier,
|
||||
// y,
|
||||
// (part1left + (s32)(width * healthfrac)) * g_ScreenWidthMultiplier,
|
||||
// y + healthheight);
|
||||
//
|
||||
// gDPSetPrimColorViaWord(gdl++, 0, 0, 0x00000080);
|
||||
//
|
||||
// // Part 2 black
|
||||
// gDPFillRectangle(gdl++,
|
||||
// (part1left + (s32)(width * healthfrac)) * g_ScreenWidthMultiplier,
|
||||
// y,
|
||||
// (part1left + width) * g_ScreenWidthMultiplier,
|
||||
// y + healthheight);
|
||||
// }
|
||||
//
|
||||
// // Render shield bar
|
||||
// // 20d0
|
||||
// gDPSetPrimColorViaWord(gdl++, 0, 0, 0x00c00060);
|
||||
//
|
||||
// gDPFillRectangle(gdl++,
|
||||
// part1left * g_ScreenWidthMultiplier,
|
||||
// y + healthheight + 2,
|
||||
// (part1left + (s32)(width * shieldfrac)) * g_ScreenWidthMultiplier,
|
||||
// y + healthheight + 2 + (s32)(healthheight * 0.75f));
|
||||
//
|
||||
// gDPSetPrimColorViaWord(gdl++, 0, 0, 0x00000080);
|
||||
//
|
||||
// gDPFillRectangle(gdl++,
|
||||
// (part1left + (s32)(width * shieldfrac)) * g_ScreenWidthMultiplier,
|
||||
// y + healthheight + 2,
|
||||
// (part1left + width) * g_ScreenWidthMultiplier,
|
||||
// y + healthheight + 2 + (s32)(healthheight * 0.75f));
|
||||
// }
|
||||
//
|
||||
// g_ScreenWidthMultiplier = 1;
|
||||
//
|
||||
// return gdl;
|
||||
//}
|
||||
@@ -1996,7 +1996,7 @@ Gfx *renderFrame(Gfx *gdl)
|
||||
}
|
||||
|
||||
gdl = func0f1274d8(gdl);
|
||||
gdl = func0f100ad0(gdl);
|
||||
gdl = activemenuRender(gdl);
|
||||
func00016748(1);
|
||||
|
||||
if (g_Vars.currentplayer->unk1c50_01) {
|
||||
|
||||
@@ -156,6 +156,10 @@
|
||||
#define AMSLOTFLAG_ACTIVE 0x08 // pulsates slightly, eg. cloak/xray when active
|
||||
#define AMSLOTFLAG_NOAMMO 0x10 // black BG, no border, orange text
|
||||
|
||||
#define AMSLOTMODE_DEFAULT 0
|
||||
#define AMSLOTMODE_FOCUSED 1
|
||||
#define AMSLOTMODE_CURRENT 2
|
||||
|
||||
// Active menu (weapon wheel) modes
|
||||
#define AMMODE_CLOSED 0
|
||||
#define AMMODE_VIEW 1
|
||||
|
||||
@@ -174,7 +174,7 @@ extern struct menudialog menudialog_fullcontrollerpak;
|
||||
extern struct menudialog menudialog_cannotreadgameboy;
|
||||
extern struct menudialog menudialog_datalost;
|
||||
extern struct menudialog menudialog_picktarget;
|
||||
extern u32 var800719a0;
|
||||
extern u8 var800719a0[3][3];
|
||||
extern u16 options_controlmode[];
|
||||
extern u16 g_AimControlOptions[];
|
||||
extern u16 g_SoundModeOptions[];
|
||||
|
||||
@@ -16,11 +16,11 @@ void activemenuAssignWeaponSlots(void);
|
||||
void activemenuOpen(void);
|
||||
void activemenuClose(void);
|
||||
bool activemenuIsCramped(void);
|
||||
void activemenuCalculateSlotPosition(s16 param_1, s16 param_2, s16 *param_3, s16 *param_4);
|
||||
Gfx *activemenuRenderText(Gfx *gdl, char *text, s32 arg2, s16 left, s16 top);
|
||||
void activemenuCalculateSlotPosition(s16 column, s16 row, s16 *x, s16 *y);
|
||||
Gfx *activemenuRenderText(Gfx *gdl, char *text, u32 colour, s16 left, s16 top);
|
||||
Gfx *activemenuRenderAibotInfo(Gfx *gdl, s32 buddynum);
|
||||
Gfx *activemenuRenderSlot(Gfx *gdl, char *text, s16 x, s16 y, s32 mode, s32 flags);
|
||||
Gfx *func0f100ad0(Gfx *gdl);
|
||||
Gfx *activemenuRender(Gfx *gdl);
|
||||
s32 menudialog000fcd48(u32 operation, struct menudialog *dialog, union handlerdata *data);
|
||||
s32 menudialogMpPickTarget(u32 operation, struct menudialog *dialog, union handlerdata *data);
|
||||
s32 menuhandler000fcc34(u32 operation, struct menuitem *item, union handlerdata *data);
|
||||
|
||||
@@ -78,8 +78,8 @@ struct g_vars {
|
||||
/*000308*/ u32 unk000308;
|
||||
/*00030c*/ u32 unk00030c;
|
||||
/*000310*/ u32 unk000310;
|
||||
/*000314*/ bool mplayerisrunning;
|
||||
/*000318*/ bool normmplayerisrunning;
|
||||
/*000314*/ bool mplayerisrunning; // combat sim with any number of players, coop with human buddy, and counter-op
|
||||
/*000318*/ bool normmplayerisrunning; // combat sim with any number of players
|
||||
/*00031c*/ s32 lvmpbotlevel;
|
||||
/*000320*/ s32 unk000320;
|
||||
/*000324*/ s32 unk000324;
|
||||
|
||||
Reference in new issue
Block a user