added custom debug mode

This commit is contained in:
Reonu
2021-08-05 22:17:09 +01:00
parent d61122104b
commit 2928157655
7 changed files with 48 additions and 6 deletions

View File

@@ -37,7 +37,7 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
**Hacker QOL:**
- Global, non-level based, star IDs (off by default) *
- FPS counter (use the function `print_fps(x,y)` anywhere that runs code every frame)
- Debug mode: prints mario's coordinates, angle and speed, and a FPS counter.
- Automatic console/emulator detection. If emulator is detected, LODs are disabled. *
- Ability to configure whether there's a 100 coin star at all and how many coins are required to spawn it *
- Ability to easily change the warp that EXIT COURSE takes you to via config.h, or disable it entirely. *

View File

@@ -204,11 +204,9 @@ ALIGNED8 static const Texture texture_hud_char_star[] = {
#include "textures/segment2/segment2.05C00.rgba16.inc.c"
};
#if defined(VERSION_JP) || defined(VERSION_SH)
ALIGNED8 static const Texture texture_hud_char_decimal_point[] = {
#include "textures/segment2/segment2.05E00.rgba16.inc.c"
};
#endif
#if defined(VERSION_JP) || defined(VERSION_SH)
ALIGNED8 static const Texture texture_hud_char_beta_key[] = {
@@ -1824,7 +1822,7 @@ const Texture *const main_hud_lut[] = {
texture_hud_char_percent, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0,
0x0, 0x0, texture_hud_char_multiply, texture_hud_char_coin,
texture_hud_char_mario_head, texture_hud_char_star, 0x0, 0x0,
texture_hud_char_mario_head, texture_hud_char_star, texture_hud_char_decimal_point, 0x0,
texture_hud_char_apostrophe, texture_hud_char_double_quote,
#else
texture_hud_char_0, texture_hud_char_1, texture_hud_char_2, texture_hud_char_3,

View File

@@ -109,6 +109,8 @@
#define EXPAND_AUDIO_HEAP
// Allow all surfaces types to have force, (doesn't require setting force, just allows it to be optional).
#define ALL_SURFACES_HAVE_FORCE
// Custom debug mode. Press DPAD left to show the debug UI. Press DPAD right to enter the noclip mode.
//#define CUSTOM_DEBUG
// BUG/GAME QOL FIXES
// Fix instant warp offset not working when warping across different areas

View File

@@ -46,6 +46,9 @@ OSContPad gControllerPads[4];
u8 gControllerBits;
u8 gIsConsole = TRUE; // Needs to be initialized before audio_reset_session is called
u8 gBorderHeight;
#ifdef CUSTOM_DEBUG
u8 gCustomDebugMode;
#endif
#ifdef EEP
s8 gEepromProbe;
#endif

View File

@@ -46,6 +46,9 @@ extern u8 gIsConsole;
extern u8 gWidescreen;
#endif
extern u8 gBorderHeight;
#ifdef CUSTOM_DEBUG
extern u8 gCustomDebugMode;
#endif
#ifdef EEP
extern s8 gEepromProbe;
#endif

View File

@@ -15,6 +15,8 @@
#include "print.h"
#include "engine/surface_load.h"
#include "config.h"
/* @file hud.c
* This file implements HUD rendering and power meter animations.
* That includes stars, lives, coins, camera status, power meter, timer
@@ -48,9 +50,9 @@ f32 calculate_and_update_fps()
void print_fps(s32 x, s32 y)
{
f32 fps = calculate_and_update_fps();
char text[10];
char text[14];
sprintf(text, "%2.2f", fps);
sprintf(text, "FPS %2.2f", fps);
print_text(x, y, text);
}
@@ -308,6 +310,18 @@ void render_hud_mario_lives(void) {
print_text_fmt_int(GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(54), HUD_TOP_Y, "%d", gHudDisplay.lives);
}
#ifdef CUSTOM_DEBUG
void render_debug_mode(void) {
print_text(180, 40, "DEBUG MODE");
print_text_fmt_int(5, 20, "Z %d", gMarioState->pos[2]);
print_text_fmt_int(5, 40, "Y %d", gMarioState->pos[1]);
print_text_fmt_int(5, 60, "X %d", gMarioState->pos[0]);
print_text_fmt_int(10, 100, "SPD %d", (s32) gMarioState->forwardVel);
print_text_fmt_int(10, 120, "ANG 0*%04x", (u16) gMarioState->faceAngle[1]);
print_fps(10,80);
}
#endif
/**
* Renders the amount of coins collected.
*/
@@ -521,5 +535,10 @@ void render_hud(void) {
{
print_text(10, 60, "SURFACE NODE POOL FULL");
}
#ifdef CUSTOM_DEBUG
if (gCustomDebugMode) {
render_debug_mode();
}
#endif
}
}

View File

@@ -1283,6 +1283,23 @@ void update_mario_button_inputs(struct MarioState *m) {
m->input |= INPUT_A_DOWN;
}
#ifdef CUSTOM_DEBUG
if (m->controller->buttonPressed & L_JPAD) {
gCustomDebugMode ^= 1;
}
if (gCustomDebugMode) {
if (m->controller->buttonPressed & R_JPAD) {
if (gMarioState->action == ACT_DEBUG_FREE_MOVE) {
set_mario_action(gMarioState, ACT_IDLE, 0);
} else {
set_mario_action(gMarioState, ACT_DEBUG_FREE_MOVE, 0);
}
}
} else if (gMarioState->action == ACT_DEBUG_FREE_MOVE) {
set_mario_action(gMarioState, ACT_IDLE, 0);
}
#endif
// Don't update for these buttons if squished.
if (m->squishTimer == 0) {
if (m->controller->buttonPressed & B_BUTTON) {