Skip to content

Commit d5c51c3

Browse files
committed
Reduce memory footprint of printDebug
This splits the sprintf output into three sections, so the buffer only needs to be 34 bytes large instead of 88.
1 parent 2642361 commit d5c51c3

File tree

1 file changed

+30
-23
lines changed

1 file changed

+30
-23
lines changed

src/XInput.cpp

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -570,8 +570,26 @@ static void fillBuffer(char* buff, const char fill) {
570570

571571
void XInputController::printDebug(Print &output) const {
572572
const char fillCharacter = '_';
573+
char buffer[34];
573574

574-
char buffer[88];
575+
output.print("XInput Debug: ");
576+
577+
// Left Side Controls
578+
char leftBumper[3] = "LB";
579+
char leftJoyBtn[3] = "L3";
580+
581+
if (!getButton(BUTTON_LB)) fillBuffer(leftBumper, fillCharacter);
582+
if (!getButton(BUTTON_L3)) fillBuffer(leftJoyBtn, fillCharacter);
583+
584+
sprintf(buffer,
585+
"LT: %3u %s L:(%6d, %6d, %s)",
586+
587+
getTrigger(TRIGGER_LEFT),
588+
leftBumper,
589+
getJoystickX(JOY_LEFT), getJoystickY(JOY_LEFT),
590+
leftJoyBtn
591+
);
592+
output.print(buffer);
575593

576594
// Face Buttons
577595
const char dpadLPrint = getButton(DPAD_LEFT) ? '<' : fillCharacter;
@@ -589,36 +607,25 @@ void XInputController::printDebug(Print &output) const {
589607

590608
const char logoPrint = getButton(BUTTON_LOGO) ? 'X' : fillCharacter;
591609

592-
// Bumpers
593-
char leftBumper[3] = "LB";
594-
char rightBumper[3] = "RB";
610+
sprintf(buffer,
611+
" %c%c%c%c | %c%c%c | %c%c%c%c ",
595612

596-
if (!getButton(BUTTON_LB)) fillBuffer(leftBumper, fillCharacter);
597-
if (!getButton(BUTTON_RB)) fillBuffer(rightBumper, fillCharacter);
613+
dpadLPrint, dpadUPrint, dpadDPrint, dpadRPrint,
614+
backPrint, logoPrint, startPrint,
615+
aButtonPrint, bButtonPrint, xButtonPrint, yButtonPrint
616+
);
617+
output.print(buffer);
598618

599-
// Joystick Buttons
600-
char leftJoyBtn[3] = "L3";
619+
// Right Side Controls
620+
char rightBumper[3] = "RB";
601621
char rightJoyBtn[3] = "R3";
602622

603-
if (!getButton(BUTTON_L3)) fillBuffer(leftJoyBtn, fillCharacter);
623+
if (!getButton(BUTTON_RB)) fillBuffer(rightBumper, fillCharacter);
604624
if (!getButton(BUTTON_R3)) fillBuffer(rightJoyBtn, fillCharacter);
605625

606-
output.print("XInput Debug: ");
607626
sprintf(buffer,
608-
"LT: %3u %s L:(%6d, %6d, %s) %c%c%c%c | %c%c%c | %c%c%c%c R:(%6d, %6d, %s) %s RT: %3u",
627+
"R:(%6d, %6d, %s) %s RT: %3u",
609628

610-
// Left side controls
611-
getTrigger(TRIGGER_LEFT),
612-
leftBumper,
613-
getJoystickX(JOY_LEFT), getJoystickY(JOY_LEFT),
614-
leftJoyBtn,
615-
616-
// Buttons
617-
dpadLPrint, dpadUPrint, dpadDPrint, dpadRPrint,
618-
backPrint, logoPrint, startPrint,
619-
aButtonPrint, bButtonPrint, xButtonPrint, yButtonPrint,
620-
621-
// Right side controls
622629
getJoystickX(JOY_RIGHT), getJoystickY(JOY_RIGHT),
623630
rightJoyBtn,
624631
rightBumper,

0 commit comments

Comments
 (0)