1287 lines
22 KiB
C
1287 lines
22 KiB
C
#include <ultra64.h>
|
|
#include "constants.h"
|
|
#include "game/challenge.h"
|
|
#include "game/chraction.h"
|
|
#include "game/debug.h"
|
|
#include "game/gamefile.h"
|
|
#include "lib/ailist.h"
|
|
#include "lib/debughud.h"
|
|
#include "lib/rmon.h"
|
|
#include "lib/str.h"
|
|
#include "lib/vi.h"
|
|
#include "lib/vm.h"
|
|
#include "bss.h"
|
|
#include "data.h"
|
|
#include "types.h"
|
|
|
|
#define DEBUGMENU_MAIN 0
|
|
#define DEBUGMENU_CUTSCENE 1
|
|
|
|
#define DEBUGOPT_ALLLEVELS 13
|
|
#define DEBUGOPT_ALLTRAINING 29
|
|
#define DEBUGOPT_PROPS 32
|
|
#define DEBUGOPT_TILES 39
|
|
#define DEBUGOPT_PADS 40
|
|
#define DEBUGOPT_CUTDEBUG 44
|
|
#define DEBUGOPT_CHRSTATS 65
|
|
#define DEBUGOPT_ALLCHALLENGES 67
|
|
#define DEBUGOPT_VMSTATS 69
|
|
#define DEBUGOPT_MEMINFO 70
|
|
#define DEBUGOPT_ALLBUDDIES 94
|
|
#define DEBUGOPT_SETCOMPLETE 95
|
|
|
|
#if VERSION == VERSION_PAL_BETA
|
|
#define DEBUGOPT_MANPOS 102
|
|
#else
|
|
#define DEBUGOPT_MANPOS 101
|
|
#endif
|
|
|
|
// The DEBUG_VALUE macro is used for readability.
|
|
#ifdef DEBUG
|
|
#define DEBUG_VALUE(valueifdebug, valueifnotdebug) (valueifdebug)
|
|
#else
|
|
#define DEBUG_VALUE(valueifdebug, valueifnotdebug) (valueifnotdebug)
|
|
#endif
|
|
|
|
#if VERSION == VERSION_PAL_BETA
|
|
s32 var80075d60 = 2;
|
|
s32 var80075d64 = 2;
|
|
s32 var80075d68 = 2;
|
|
s32 var800786f4nb = 2;
|
|
#endif
|
|
|
|
#ifdef DEBUG
|
|
s32 g_DebugMenuOffsets[] = {
|
|
15,
|
|
30,
|
|
45,
|
|
59,
|
|
72,
|
|
84,
|
|
#if VERSION == VERSION_PAL_BETA
|
|
96,
|
|
109,
|
|
#else
|
|
95,
|
|
108,
|
|
#endif
|
|
-1,
|
|
};
|
|
|
|
s32 g_DebugMenuPositions[][2] = {
|
|
{ 8, 2 },
|
|
{ 8, 3 },
|
|
{ 8, 4 },
|
|
{ 8, 5 },
|
|
{ 8, 6 },
|
|
{ 8, 7 },
|
|
{ 8, 8 },
|
|
{ 8, 9 },
|
|
{ 8, 10 },
|
|
{ 8, 11 },
|
|
{ 8, 12 },
|
|
{ 8, 13 },
|
|
{ 8, 14 },
|
|
{ 8, 15 },
|
|
{ 8, 16 },
|
|
|
|
{ 25, 2 },
|
|
{ 25, 3 },
|
|
{ 25, 4 },
|
|
{ 25, 5 },
|
|
{ 25, 6 },
|
|
{ 25, 7 },
|
|
{ 25, 8 },
|
|
{ 25, 9 },
|
|
{ 25, 10 },
|
|
{ 25, 11 },
|
|
{ 25, 12 },
|
|
{ 25, 13 },
|
|
{ 25, 14 },
|
|
{ 25, 15 },
|
|
{ 25, 16 },
|
|
|
|
{ 40, 2 },
|
|
{ 40, 3 },
|
|
{ 40, 4 },
|
|
{ 40, 5 },
|
|
{ 40, 6 },
|
|
{ 40, 7 },
|
|
{ 40, 8 },
|
|
{ 40, 9 },
|
|
{ 40, 10 },
|
|
{ 40, 11 },
|
|
{ 40, 12 },
|
|
{ 40, 13 },
|
|
{ 40, 14 },
|
|
{ 40, 15 },
|
|
{ 40, 16 },
|
|
|
|
{ 57, 2 },
|
|
{ 57, 3 },
|
|
{ 57, 4 },
|
|
{ 57, 5 },
|
|
{ 57, 6 },
|
|
{ 57, 7 },
|
|
{ 57, 8 },
|
|
{ 57, 9 },
|
|
{ 57, 10 },
|
|
{ 57, 11 },
|
|
{ 57, 12 },
|
|
{ 57, 13 },
|
|
{ 57, 14 },
|
|
{ 57, 15 },
|
|
|
|
{ 8, 18 },
|
|
{ 8, 19 },
|
|
{ 8, 20 },
|
|
{ 8, 21 },
|
|
{ 8, 22 },
|
|
{ 8, 23 },
|
|
{ 8, 24 },
|
|
{ 8, 25 },
|
|
{ 8, 26 },
|
|
{ 8, 27 },
|
|
{ 8, 28 },
|
|
{ 8, 29 },
|
|
{ 8, 30 },
|
|
|
|
{ 25, 18 },
|
|
{ 25, 19 },
|
|
{ 25, 20 },
|
|
{ 25, 21 },
|
|
{ 25, 22 },
|
|
{ 25, 23 },
|
|
{ 25, 24 },
|
|
{ 25, 25 },
|
|
{ 25, 26 },
|
|
{ 25, 27 },
|
|
{ 25, 28 },
|
|
{ 25, 29 },
|
|
|
|
{ 40, 18 },
|
|
{ 40, 19 },
|
|
{ 40, 20 },
|
|
{ 40, 21 },
|
|
{ 40, 22 },
|
|
{ 40, 23 },
|
|
{ 40, 24 },
|
|
{ 40, 25 },
|
|
{ 40, 26 },
|
|
{ 40, 27 },
|
|
{ 40, 28 },
|
|
#if VERSION == VERSION_PAL_BETA
|
|
{ 40, 29 },
|
|
#endif
|
|
|
|
{ 57, 18 },
|
|
{ 57, 19 },
|
|
{ 57, 20 },
|
|
{ 57, 21 },
|
|
{ 57, 22 },
|
|
{ 57, 23 },
|
|
{ 57, 24 },
|
|
{ 57, 25 },
|
|
{ 57, 26 },
|
|
{ 57, 27 },
|
|
{ 57, 28 },
|
|
{ 57, 29 },
|
|
{ 57, 30 },
|
|
};
|
|
|
|
// Comments are strings found in XBLA debug.
|
|
char *g_DebugMenuLabels[] = {
|
|
"-", // "move view"
|
|
"-", // "rotate view"
|
|
"-", // "bond view"
|
|
"-", // "bond die"
|
|
"-", // "3rd person"
|
|
"-", // "EDIT SOUNDS"
|
|
"-", // "spirit view"
|
|
"-", // "cut scene"
|
|
"-", // "watch window"
|
|
"-", // "MP3 Player"
|
|
"-", // "lights print"
|
|
"-", // "Game Boy Camera"
|
|
"-", // "GUN SOUNDZzz"
|
|
"All Levels",
|
|
"-", // "chr view"
|
|
|
|
"-", // "select anim"
|
|
"-", // "gun pos"
|
|
"-", // "music"
|
|
"-", // "sfx"
|
|
"-", // "view textures"
|
|
"-", // "invincible"
|
|
"-", // "visible"
|
|
"-", // "collisions"
|
|
"-", // "all guns"
|
|
"-", // "max ammo"
|
|
"-", // "Shadow Stats"
|
|
"-", // "Footsteps"
|
|
"-", // "Debug Person"
|
|
"-", // "APS"
|
|
"All Training",
|
|
|
|
"-", // "display speed"
|
|
"-", // "background"
|
|
#if VERSION == VERSION_NTSC_BETA
|
|
"props",
|
|
#else
|
|
"-",
|
|
#endif
|
|
"-", // "print man pos"
|
|
"-", // "port edit"
|
|
"-", // "rect portals"
|
|
"-", // "pr room loads"
|
|
"-", // "x-ray specs"
|
|
"-", // "period"
|
|
#if VERSION == VERSION_NTSC_BETA
|
|
"tiles",
|
|
"pads",
|
|
#else
|
|
"-",
|
|
"-",
|
|
#endif
|
|
"-", // "cover"
|
|
"-", // "black"
|
|
"-", // "Portal Debug"
|
|
"-", // "cut debug"
|
|
|
|
"-", // "show mem use"
|
|
"-", // "show mem bars"
|
|
"-", // "grab rgb"
|
|
"-", // "grab jpeg"
|
|
"-", // "rnd walk"
|
|
"-", // "record ramrom"
|
|
"-", // "record 1"
|
|
"-", // "record 2"
|
|
"-", // "record 3"
|
|
"-", // "replay ramrom"
|
|
"-", // "save ramrom"
|
|
"-", // "load ramrom"
|
|
"-", // "Memory Pak"
|
|
"-", // "draw skjump"
|
|
|
|
"-", // "fast"
|
|
"-", // "objectives"
|
|
"-", // "weather"
|
|
"-", // "konsole!"
|
|
"-", // "Slo-Mo"
|
|
"-", // "Sky"
|
|
#if VERSION == VERSION_NTSC_BETA
|
|
"chr stats",
|
|
#else
|
|
"-",
|
|
#endif
|
|
"-", // "Noise Balls"
|
|
"all challenges",
|
|
"-", // "Breadcrumbs"
|
|
"VM Stats",
|
|
"Mem Info",
|
|
"-", // "Mem Load"
|
|
|
|
"-", // "res mode"
|
|
"-", // "screen size"
|
|
"-", // "screen pos"
|
|
"-", // "show stats"
|
|
"-", // "blur"
|
|
"-", // "rain"
|
|
"-", // "snow"
|
|
"-", // "cameras"
|
|
"-", // "ai print"
|
|
"-", // "eye spy"
|
|
"-", // "aiEndLevel off"
|
|
"-", // "bot wzone"
|
|
|
|
"-", // "show patrols"
|
|
"-", // "world pos"
|
|
"-", // "vis cvg"
|
|
"-", // "chr num"
|
|
"-", // "chr test"
|
|
"-", // "room blocks"
|
|
"-", // "profile"
|
|
"-", // "obj load"
|
|
"-", // "weapon load"
|
|
"-", // "frame mode"
|
|
"all buddies",
|
|
#if VERSION == VERSION_PAL_BETA
|
|
"set complete",
|
|
#endif
|
|
|
|
"-", // "joy2 sky edit"
|
|
"-", // "Edit Wallhits"
|
|
"-", // "joy2 detail edit"
|
|
"-", // "explosion info"
|
|
"-", // "magic fog"
|
|
"-", // "gun watch pos"
|
|
"testing man pos",
|
|
"-", // "fog"
|
|
"-", // "show stacks"
|
|
"-", // "lod"
|
|
"-", // "FrGraph"
|
|
"-", // "DL-Info"
|
|
"-", // "Codesize"
|
|
};
|
|
|
|
s32 g_DebugCutsceneOffsets[] = {
|
|
0, -1,
|
|
};
|
|
|
|
s32 g_DebugCutscenePositions[][2] = {
|
|
{ 8, 2 },
|
|
{ 8, 3 },
|
|
{ 8, 4 },
|
|
{ 8, 5 },
|
|
{ 8, 6 },
|
|
{ 8, 7 },
|
|
{ 8, 8 },
|
|
{ 8, 9 },
|
|
{ 8, 10 },
|
|
{ 8, 11 },
|
|
};
|
|
|
|
char *g_DebugCutsceneLabelPtrs[10];
|
|
char g_DebugCutsceneLabelBuffers[10][20];
|
|
u32 var800a7950nb;
|
|
|
|
s32 g_DebugCurMenu = DEBUGMENU_MAIN;
|
|
s32 g_DebugSelectedOptionsByMenu[2] = {0, 0};
|
|
#endif
|
|
|
|
#if VERSION != VERSION_PAL_BETA
|
|
s32 var80075d60 = 2;
|
|
s32 var80075d64 = 2;
|
|
s32 var80075d68 = 2;
|
|
s32 var800786f4nb = 2;
|
|
#endif
|
|
|
|
#ifdef DEBUG
|
|
s32 g_DebugProfileMode = 0;
|
|
bool g_DebugRenderBg = true;
|
|
bool g_DebugRenderProps = true;
|
|
s32 var80078704nb = 1;
|
|
s32 var80078708nb = 0;
|
|
bool g_DebugRoomState = false;
|
|
s32 var80078710nb = 0;
|
|
s32 var80078714nb = 0;
|
|
s32 g_DebugRoomGfxExtraMem = 0;
|
|
bool g_DebugObjDeform = false;
|
|
#endif
|
|
|
|
bool g_DebugLineMode = false;
|
|
|
|
#ifdef DEBUG
|
|
s32 var80078724nb = 0;
|
|
s32 var80078728nb = 0;
|
|
s32 var8007872cnb = 0;
|
|
bool g_DebugManPos = false;
|
|
#endif
|
|
|
|
bool g_DebugTurboMode = false;
|
|
|
|
#ifdef DEBUG
|
|
bool g_DebugObjectives = false;
|
|
bool g_DebugZBufferDisabled = false;
|
|
s32 var80078740nb = 0;
|
|
s32 var80078744nb = 0;
|
|
s32 var80078748nb = 0;
|
|
s32 var8007874cnb = 0;
|
|
s32 var80078750nb = 0;
|
|
s32 var80078754nb = 0;
|
|
s32 var80078758nb = 0;
|
|
s32 var8007875cnb = 0;
|
|
s32 var80078760nb = 0;
|
|
s32 g_DebugSlowMotion = SLOWMOTION_OFF;
|
|
s32 var80078768nb = 0;
|
|
s32 g_DebugTiles = 0;
|
|
s32 g_DebugPads = 0;
|
|
s32 var80078774nb = 0;
|
|
s32 var80078778nb = 0;
|
|
s32 var8007877cnb = 0;
|
|
s32 var80078780nb = 0;
|
|
s32 var80078784nb = 0;
|
|
s32 var80078788nb = 0;
|
|
s32 var8007878cnb = 0;
|
|
s32 var80078790nb = 0;
|
|
bool g_DebugFootsteps = true;
|
|
bool g_DebugAllChallenges = false;
|
|
bool g_DebugAllBuddies = false;
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
bool g_DebugSetComplete = false;
|
|
#endif
|
|
bool g_DebugAllTraining = false;
|
|
s32 g_DebugCutDebug = 0;
|
|
s32 var800787a8nb = 0;
|
|
bool g_DebugMemInfo = false;
|
|
s32 var800787b0nb = 0;
|
|
s32 var800787b4nb = 0;
|
|
s32 var800787b8nb = 0;
|
|
s32 var800787bcnb = 0;
|
|
s32 var800787c0nb = 0;
|
|
s32 var800787c4nb = 1;
|
|
s32 var800787c8nb = 0;
|
|
s32 var800787ccnb = 0;
|
|
s32 var800787d0nb = 0;
|
|
s32 var800787d4nb = 0;
|
|
s32 var800787d8nb = 0;
|
|
s32 var800787dcnb = 0;
|
|
s32 var800787e0nb = 0;
|
|
bool g_DebugChrStats = false;
|
|
s32 var800787e8nb = 0;
|
|
s32 var800787ecnb = 0;
|
|
s32 var800787f0nb = 0;
|
|
u32 var800787f4nb = 0x80500000;
|
|
u32 var800787f8nb = 0x00040000;
|
|
u32 var800787fcnb = 0x7f000000;
|
|
u32 var80078800nb = 0x7f100000;
|
|
u32 var80078804nb = 0x80600000;
|
|
u32 var80078808nb = 0x00040000;
|
|
u32 var8007880cnb = 0x70000000;
|
|
u32 var80078810nb = 0x70100000;
|
|
#endif
|
|
|
|
s32 g_DebugScreenshotRgb = 0;
|
|
s32 g_DebugScreenshotJpg = 0;
|
|
|
|
#ifdef DEBUG
|
|
bool g_DebugIsMenuOpen = false;
|
|
#endif
|
|
|
|
f32 var80075d80 = 0;
|
|
f32 var80075d84 = 0;
|
|
f32 var80075d88 = 0;
|
|
f32 var80075d8c = 0;
|
|
f32 var80075d90 = 0;
|
|
f32 var80075d94 = -1;
|
|
f32 var80075d98 = 0;
|
|
f32 var80075d9c = 1;
|
|
f32 var80075da0 = 0;
|
|
f32 var80075da4 = 0;
|
|
f32 var80075da8 = 1;
|
|
f32 var80075dac = 0;
|
|
f32 var80075db0 = 0;
|
|
f32 var80075db4 = 1;
|
|
f32 var80075db8 = 0;
|
|
f32 var80075dbc = 0;
|
|
f32 var80075dc0 = 0;
|
|
f32 var80075dc4 = 0;
|
|
f32 var80075dc8 = 0;
|
|
f32 var80075dcc = 0;
|
|
f32 var80075dd0 = 0;
|
|
f32 var80075dd4 = 0;
|
|
f32 var80075dd8 = 1;
|
|
|
|
void debugUpdateMenu(void)
|
|
{
|
|
#ifdef DEBUG
|
|
s32 i;
|
|
|
|
if (g_DebugCurMenu == DEBUGMENU_MAIN) {
|
|
dmenuSetMenu(g_DebugMenuLabels, g_DebugMenuPositions, g_DebugMenuOffsets);
|
|
} else if (g_DebugCurMenu == DEBUGMENU_CUTSCENE) {
|
|
for (i = 0; i < ARRAYCOUNT(g_DebugCutsceneLabelPtrs); i++) {
|
|
g_DebugCutsceneLabelPtrs[i] = g_DebugCutsceneLabelBuffers[i];
|
|
}
|
|
|
|
g_DebugCutsceneOffsets[0] = 0;
|
|
|
|
strcpy(g_DebugCutsceneLabelPtrs[0], "main");
|
|
g_DebugCutsceneOffsets[0]++;
|
|
|
|
for (i = 0; ; i++) {
|
|
if (ailistFindById(0xc00 + i) == NULL) {
|
|
break;
|
|
}
|
|
|
|
sprintf(g_DebugCutsceneLabelPtrs[i + 1], "scene %d", i);
|
|
g_DebugCutsceneOffsets[0]++;
|
|
}
|
|
|
|
dmenuSetMenu(g_DebugCutsceneLabelPtrs, g_DebugCutscenePositions, g_DebugCutsceneOffsets);
|
|
}
|
|
|
|
dmenuSetSelectedOption(g_DebugSelectedOptionsByMenu[g_DebugCurMenu]);
|
|
#endif
|
|
}
|
|
|
|
#ifdef DEBUG
|
|
void debugSaveSelectedOption(void)
|
|
{
|
|
g_DebugSelectedOptionsByMenu[g_DebugCurMenu] = dmenuGetSelectedOption();
|
|
}
|
|
|
|
void debug0f1193e4nb(void) // not called
|
|
{
|
|
// empty
|
|
}
|
|
|
|
void debug0f1193ecnb(void) // not called
|
|
{
|
|
// empty
|
|
}
|
|
|
|
void debug0f1193f4nb(void) // not called
|
|
{
|
|
var80075d60 = var80075d64 = var800786f4nb = 2;
|
|
}
|
|
|
|
void debug0f11941cnb(void) // not called
|
|
{
|
|
rmon0002fa30(&var800787f4nb, 2);
|
|
rmon0002fa38(250);
|
|
}
|
|
|
|
void debug0f11944cnb(void) // not called
|
|
{
|
|
rmon0002fa40();
|
|
}
|
|
#endif
|
|
|
|
bool debugProcessInput(s8 stickx, s8 sticky, u16 buttons, u16 buttonsthisframe)
|
|
{
|
|
#ifdef DEBUG
|
|
s32 i;
|
|
s32 prev;
|
|
s32 tmp = 3;
|
|
|
|
debugUpdateMenu();
|
|
|
|
if (g_DebugScreenshotRgb) {
|
|
prev = g_DebugScreenshotRgb++;
|
|
|
|
if (tmp == prev) {
|
|
viGrabRgb32();
|
|
g_DebugScreenshotRgb = 0;
|
|
viSet16Bit();
|
|
osViBlack(false);
|
|
}
|
|
}
|
|
|
|
if (g_DebugScreenshotJpg) {
|
|
prev = g_DebugScreenshotJpg++;
|
|
|
|
if (tmp == prev) {
|
|
viGrabJpg32();
|
|
g_DebugScreenshotJpg = 0;
|
|
viSet16Bit();
|
|
osViBlack(false);
|
|
}
|
|
}
|
|
|
|
if (!g_DebugIsMenuOpen) {
|
|
tmp = (buttons & U_CBUTTONS) && (buttons & D_CBUTTONS);
|
|
g_DebugIsMenuOpen = tmp;
|
|
return tmp;
|
|
}
|
|
|
|
if (var80075d68 != -2) {
|
|
var800786f4nb = var80075d68;
|
|
var80075d68 = -2;
|
|
}
|
|
|
|
if (buttonsthisframe & L_JPAD) {
|
|
dmenuNavigateLeft();
|
|
var80075d68 = -2;
|
|
}
|
|
|
|
if (buttonsthisframe & R_JPAD) {
|
|
dmenuNavigateRight();
|
|
var80075d68 = -2;
|
|
}
|
|
|
|
if (buttonsthisframe & U_JPAD) {
|
|
dmenuNavigateUp();
|
|
var80075d68 = -2;
|
|
}
|
|
|
|
if (buttonsthisframe & D_JPAD) {
|
|
dmenuNavigateDown();
|
|
var80075d68 = -2;
|
|
}
|
|
|
|
if (buttonsthisframe & (A_BUTTON | START_BUTTON)) {
|
|
if (g_DebugCurMenu == DEBUGMENU_CUTSCENE) {
|
|
if (dmenuGetSelectedOption() == 0) {
|
|
// Selected "main" from cutscene menu
|
|
g_DebugCurMenu = DEBUGMENU_MAIN;
|
|
dhudClear();
|
|
debugUpdateMenu();
|
|
} else {
|
|
cutsceneStart(0xc00 + dmenuGetSelectedOption() - 1);
|
|
}
|
|
} else if (g_DebugCurMenu == DEBUGMENU_MAIN) {
|
|
switch (dmenuGetSelectedOption()) {
|
|
#if VERSION == VERSION_PAL_BETA
|
|
case DEBUGOPT_MANPOS:
|
|
g_DebugManPos ^= 1;
|
|
break;
|
|
case DEBUGOPT_ALLBUDDIES:
|
|
g_DebugAllBuddies ^= 1;
|
|
break;
|
|
case DEBUGOPT_SETCOMPLETE:
|
|
g_DebugSetComplete ^= 1;
|
|
break;
|
|
case DEBUGOPT_VMSTATS:
|
|
g_VmShowStats ^= 1;
|
|
break;
|
|
case DEBUGOPT_MEMINFO:
|
|
g_DebugMemInfo ^= 1;
|
|
break;
|
|
case DEBUGOPT_ALLLEVELS:
|
|
for (i = 0; i < 21; i++) {
|
|
for (tmp = 0; tmp < 3; tmp++) {
|
|
g_GameFile.besttimes[i][tmp] = 7;
|
|
}
|
|
}
|
|
|
|
g_AltTitleUnlocked = true;
|
|
break;
|
|
case DEBUGOPT_ALLCHALLENGES:
|
|
g_DebugAllChallenges ^= 1;
|
|
challengeDetermineUnlockedFeatures();
|
|
break;
|
|
case DEBUGOPT_ALLTRAINING:
|
|
g_DebugAllTraining ^= 1;
|
|
|
|
for (i = 0; i < ARRAYCOUNT(g_GameFile.firingrangescores); i++) {
|
|
g_GameFile.firingrangescores[i] = 0xff;
|
|
}
|
|
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_CLOAK_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_DISGUISE_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_XRAY_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_IR_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_RTRACKER_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_DOORDECODER_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_NIGHTVISION_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_CAMSPY_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_ECMMINE_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_UPLINK_DONE);
|
|
break;
|
|
#else
|
|
case DEBUGOPT_MANPOS:
|
|
g_DebugManPos ^= 1;
|
|
break;
|
|
case DEBUGOPT_PADS:
|
|
g_DebugPads = (g_DebugPads + 1) % 4;
|
|
break;
|
|
case DEBUGOPT_TILES:
|
|
g_DebugTiles = (g_DebugTiles + 1) % 4;
|
|
break;
|
|
case DEBUGOPT_ALLLEVELS:
|
|
for (i = 0; i < 21; i++) {
|
|
for (tmp = 0; tmp < 3; tmp++) {
|
|
g_GameFile.besttimes[i][tmp] = 7;
|
|
}
|
|
}
|
|
|
|
g_AltTitleUnlocked = true;
|
|
break;
|
|
case DEBUGOPT_ALLCHALLENGES:
|
|
g_DebugAllChallenges ^= 1;
|
|
challengeDetermineUnlockedFeatures();
|
|
break;
|
|
case DEBUGOPT_ALLBUDDIES:
|
|
g_DebugAllBuddies ^= 1;
|
|
break;
|
|
case DEBUGOPT_ALLTRAINING:
|
|
g_DebugAllTraining ^= 1;
|
|
|
|
for (i = 0; i < ARRAYCOUNT(g_GameFile.firingrangescores); i++) {
|
|
g_GameFile.firingrangescores[i] = 0xff;
|
|
}
|
|
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_CLOAK_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_DISGUISE_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_XRAY_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_IR_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_RTRACKER_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_DOORDECODER_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_NIGHTVISION_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_CAMSPY_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_ECMMINE_DONE);
|
|
gamefileSetFlag(GAMEFILEFLAG_CI_UPLINK_DONE);
|
|
break;
|
|
case DEBUGOPT_CUTDEBUG:
|
|
g_DebugCutDebug ^= 1;
|
|
break;
|
|
case DEBUGOPT_CHRSTATS:
|
|
g_DebugChrStats ^= 1;
|
|
break;
|
|
case DEBUGOPT_PROPS:
|
|
g_DebugRenderProps ^= 1;
|
|
break;
|
|
case DEBUGOPT_VMSTATS:
|
|
g_VmShowStats ^= 1;
|
|
break;
|
|
case DEBUGOPT_MEMINFO:
|
|
g_DebugMemInfo ^= 1;
|
|
break;
|
|
#endif
|
|
}
|
|
}
|
|
}
|
|
|
|
if (buttonsthisframe & START_BUTTON) {
|
|
if (g_DebugIsMenuOpen == true) {
|
|
dhudClear();
|
|
}
|
|
|
|
g_DebugIsMenuOpen = false;
|
|
}
|
|
|
|
debugSaveSelectedOption();
|
|
|
|
return g_DebugIsMenuOpen;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
s32 debugGetProfileMode(void)
|
|
{
|
|
return DEBUG_VALUE(g_DebugProfileMode, 0);
|
|
}
|
|
|
|
bool debugIsBgRenderingEnabled(void)
|
|
{
|
|
return DEBUG_VALUE(g_DebugRenderBg, true);
|
|
}
|
|
|
|
bool debugIsPropRenderingEnabled(void)
|
|
{
|
|
return DEBUG_VALUE(g_DebugRenderProps, true);
|
|
}
|
|
|
|
bool debug0f11ed88(void)
|
|
{
|
|
return DEBUG_VALUE(var80078708nb, false);
|
|
}
|
|
|
|
bool debugIsManPosEnabled(void)
|
|
{
|
|
return DEBUG_VALUE(g_DebugManPos, false);
|
|
}
|
|
|
|
void debugSetManPos(bool enabled)
|
|
{
|
|
#ifdef DEBUG
|
|
g_DebugManPos = enabled;
|
|
#endif
|
|
}
|
|
|
|
bool debug0f11eda0(void) // not called
|
|
{
|
|
return DEBUG_VALUE(var80078710nb, false);
|
|
}
|
|
|
|
bool debug0f11eda8(void) // not called
|
|
{
|
|
return DEBUG_VALUE(var80078714nb, false);
|
|
}
|
|
|
|
bool debugIsRoomGfxExtraMemEnabled(void)
|
|
{
|
|
return DEBUG_VALUE(g_DebugRoomGfxExtraMem, false);
|
|
}
|
|
|
|
bool debugIsObjDeformDebugEnabled(void)
|
|
{
|
|
return DEBUG_VALUE(g_DebugObjDeform, false);
|
|
}
|
|
|
|
bool debugIsRoomStateDebugEnabled(void)
|
|
{
|
|
return DEBUG_VALUE(g_DebugRoomState, false);
|
|
}
|
|
|
|
bool debugIsLineModeEnabled(void)
|
|
{
|
|
return g_DebugLineMode;
|
|
}
|
|
|
|
void debugSetLineModeEnabled(bool enabled)
|
|
{
|
|
g_DebugLineMode = enabled;
|
|
}
|
|
|
|
#ifndef DEBUG
|
|
bool debug0f11ede0(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ede8(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11edf0(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
void debug0f11edf8(void) // not called
|
|
{
|
|
// empty
|
|
}
|
|
|
|
void debug0f11ee00(void) // not called
|
|
{
|
|
// empty
|
|
}
|
|
#endif
|
|
|
|
bool debugIsTurboModeEnabled(void)
|
|
{
|
|
return g_DebugTurboMode;
|
|
}
|
|
|
|
void debugSetTurboMode(bool enabled)
|
|
{
|
|
g_DebugTurboMode = enabled;
|
|
}
|
|
|
|
bool debugForceAllObjectivesComplete(void)
|
|
{
|
|
return DEBUG_VALUE(g_DebugObjectives, false);
|
|
}
|
|
|
|
bool debugIsZBufferDisabled(void)
|
|
{
|
|
return DEBUG_VALUE(g_DebugZBufferDisabled, false);
|
|
}
|
|
|
|
bool debug0f11ee30(void) // not called
|
|
{
|
|
return DEBUG_VALUE(var80078744nb, false);
|
|
}
|
|
|
|
bool debug0f11ee38(void) // not called
|
|
{
|
|
return DEBUG_VALUE(var80078750nb, false);
|
|
}
|
|
|
|
bool debug0f11ee40(void)
|
|
{
|
|
return DEBUG_VALUE(var80078754nb, false);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Unsure which functions are which between versions
|
|
// as none are called by both versions
|
|
|
|
#ifdef DEBUG
|
|
bool debug0f1199d8nb(void) // not called
|
|
{
|
|
return var80078758nb;
|
|
}
|
|
|
|
bool debug0f1199e4nb(void) // not called
|
|
{
|
|
return var80078740nb;
|
|
}
|
|
|
|
bool debug0f1199f0nb(void)
|
|
{
|
|
return var80078724nb;
|
|
}
|
|
|
|
bool debug0f1199fcnb(void) // not called
|
|
{
|
|
return var80078728nb;
|
|
}
|
|
|
|
bool debug0f119a08nb(void) // not called
|
|
{
|
|
return var8007872cnb;
|
|
}
|
|
|
|
bool debug0f119a14nb(void)
|
|
{
|
|
return var80078748nb;
|
|
}
|
|
|
|
bool debug0f119a20nb(void) // not called
|
|
{
|
|
return var8007874cnb;
|
|
}
|
|
|
|
bool debug0f119a2cnb(void) // not called
|
|
{
|
|
return var8007875cnb;
|
|
}
|
|
#else
|
|
bool debug0f11ee48(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ee50(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ee58(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ee60(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ee68(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
#endif
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
s32 debugGetSlowMotion(void)
|
|
{
|
|
return DEBUG_VALUE(g_DebugSlowMotion, SLOWMOTION_OFF);
|
|
}
|
|
|
|
bool debug0f11ee78(void) // not called
|
|
{
|
|
return DEBUG_VALUE(var80078768nb, false);
|
|
}
|
|
|
|
bool debug0f11ee80(void) // not called
|
|
{
|
|
return DEBUG_VALUE(var80078760nb, false);
|
|
}
|
|
|
|
s32 debugGetTilesDebugMode(void)
|
|
{
|
|
return DEBUG_VALUE(g_DebugTiles, 0);
|
|
}
|
|
|
|
s32 debugGetPadsDebugMode(void)
|
|
{
|
|
return DEBUG_VALUE(g_DebugPads, 0);
|
|
}
|
|
|
|
bool debug0f11ee98(void) // not called
|
|
{
|
|
return DEBUG_VALUE(var80078774nb, false);
|
|
}
|
|
|
|
#ifdef DEBUG
|
|
void debug0f119a80nb(void)
|
|
{
|
|
var80078774nb = 0;
|
|
}
|
|
#endif
|
|
|
|
bool debug0f11eea0(void) // not called
|
|
{
|
|
return DEBUG_VALUE(var80078778nb, false);
|
|
}
|
|
|
|
bool debug0f11eea8(void)
|
|
{
|
|
return DEBUG_VALUE(var80078780nb, false);
|
|
}
|
|
|
|
#ifdef DEBUG
|
|
bool debug0f119aa4nb(void)
|
|
{
|
|
return false;
|
|
}
|
|
#endif
|
|
|
|
bool debugDangerousProps(void)
|
|
{
|
|
return DEBUG_VALUE(var800787ecnb, false);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Unsure which functions are which between versions
|
|
// as none are called by both versions
|
|
|
|
#ifdef DEBUG
|
|
bool debug0f119ab8nb(void) // not called
|
|
{
|
|
return var800787d8nb;
|
|
}
|
|
|
|
bool debug0f119ac4nb(void) // not called
|
|
{
|
|
return var800787dcnb;
|
|
}
|
|
|
|
bool debug0f119ad0nb(void) // not called
|
|
{
|
|
return var8007877cnb;
|
|
}
|
|
#else
|
|
bool debug0f11eeb8(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11eec0(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11eec8(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11eed0(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
#endif
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
s32 debugGetMotionBlur(void)
|
|
{
|
|
return DEBUG_VALUE(var80078784nb, 0);
|
|
}
|
|
|
|
bool debug0f119ae8nb(void)
|
|
{
|
|
return DEBUG_VALUE(var80078790nb, false);
|
|
}
|
|
|
|
u32 dprint()
|
|
{
|
|
return DEBUG_VALUE(var800787b8nb, 0);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Reordered functions between versions
|
|
|
|
#ifdef DEBUG
|
|
bool debug0f119b00nb(void) // not called
|
|
{
|
|
return var800787c0nb;
|
|
}
|
|
|
|
bool debugAllowEndLevel(void)
|
|
{
|
|
return var800787c4nb;
|
|
}
|
|
|
|
bool debug0f119b18nb(void) // not called
|
|
{
|
|
return var800787c8nb;
|
|
}
|
|
|
|
bool debug0f119b24nb(void) // not called
|
|
{
|
|
return var800787ccnb;
|
|
}
|
|
|
|
bool debug0f119b30nb(void) // not called
|
|
{
|
|
return var800787d0nb;
|
|
}
|
|
|
|
bool debug0f119b3cnb(void) // not called
|
|
{
|
|
return var800787d4nb;
|
|
}
|
|
|
|
bool debugIsFootstepsEnabled(void)
|
|
{
|
|
return g_DebugFootsteps;
|
|
}
|
|
|
|
bool debugIsAllChallengesEnabled(void)
|
|
{
|
|
return g_DebugAllChallenges;
|
|
}
|
|
|
|
bool debugIsAllBuddiesEnabled(void)
|
|
{
|
|
return g_DebugAllBuddies;
|
|
}
|
|
|
|
#if VERSION >= VERSION_NTSC_1_0
|
|
bool debugIsSetCompleteEnabled(void)
|
|
{
|
|
return g_DebugSetComplete;
|
|
}
|
|
#endif
|
|
|
|
bool debugIsAllTrainingEnabled(void)
|
|
{
|
|
return g_DebugAllTraining;
|
|
}
|
|
|
|
bool debugGetCutDebug(void) // not called
|
|
{
|
|
return g_DebugCutDebug;
|
|
}
|
|
|
|
bool debug0f119b84nb(void) // not called
|
|
{
|
|
return var800787a8nb;
|
|
}
|
|
|
|
bool debugIsMemInfoEnabled(void)
|
|
{
|
|
return g_DebugMemInfo;
|
|
}
|
|
|
|
bool debug0f119b9cnb(void) // not called
|
|
{
|
|
return var800787b0nb;
|
|
}
|
|
|
|
bool debug0f119ba8nb(void) // not called
|
|
{
|
|
return var800787bcnb;
|
|
}
|
|
|
|
bool debugIsChrStatsEnabled(void)
|
|
{
|
|
return g_DebugChrStats;
|
|
}
|
|
|
|
bool debug0f11ef80(void)
|
|
{
|
|
return var800787e8nb;
|
|
}
|
|
|
|
bool debug0f119bccnb(void) // not called
|
|
{
|
|
return var800787e0nb;
|
|
}
|
|
|
|
bool debug0f119bd8nb(void) // not called
|
|
{
|
|
return var800787f0nb;
|
|
}
|
|
#else
|
|
bool debug0f11eef0(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debugIsFootstepsEnabled(void)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool debug0f11ef00(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef08(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef10(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef18(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef20(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef28(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef30(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef38(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef40(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debugAllowEndLevel(void)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool debug0f11ef50(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef58(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef60(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef68(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef70(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debugIsChrStatsEnabled(void)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef80(void)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef88(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool debug0f11ef90(void) // not called
|
|
{
|
|
return false;
|
|
}
|
|
|
|
void debug0f11ef98(s32 arg0) // not called
|
|
{
|
|
// empty
|
|
}
|
|
|
|
void debug0f11efa0(void) // not called
|
|
{
|
|
// empty
|
|
}
|
|
|
|
void debug0f11efa8(void) // not called
|
|
{
|
|
// empty
|
|
}
|
|
#endif
|