MCPcopy Create free account
hub / github.com/doldecomp/mkdd / doEscapeCode

Method doEscapeCode

libs/JSystem/J2DGraph/J2DPrint.cpp:474–604  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

472}
473
474u16 J2DPrint::doEscapeCode(const u8** strPtr, u8 alpha)
475{
476 const u8* inputStr = *strPtr;
477 u16 code = 0;
478 u16 currChar;
479
480 // assemble escape code byte-by-byte, checking if lead or outside printable range
481 for (int i = 0; i < 2; i++) {
482 if (mFont->isLeadByte(*strPtr[0])) {
483 currChar = ((*strPtr)[0] << 8) | (*strPtr)[1];
484 (*strPtr) += 2;
485 } else {
486 currChar = **strPtr;
487 (*strPtr)++;
488 }
489
490 if (currChar >= ASCII_PRINTABLE_MAX || currChar < ASCII_PRINTABLE_MIN) {
491 *strPtr = inputStr; // reset string
492 return 0;
493 }
494
495 code = ((code) << 8) | currChar;
496 }
497
498 JUTColor charColor = mActiveCharColor;
499 JUTColor gradColor = mActiveGradColor;
500 switch (code) {
501 case 'CU': // cursor up
502 mCursorY -= getNumberF32(strPtr, 1.0f, 0.0f, 10);
503 break;
504
505 case 'CD': // cursor down
506 mCursorY += getNumberF32(strPtr, 1.0f, 0.0f, 10);
507 break;
508
509 case 'CL': // cursor left
510 mCursorX -= getNumberF32(strPtr, 1.0f, 0.0f, 10);
511 break;
512
513 case 'CR': // cursor right
514 mCursorX += getNumberF32(strPtr, 1.0f, 0.0f, 10);
515 break;
516
517 case 'LU': // current line up
518 mCursorY -= mActiveScaleY;
519 break;
520
521 case 'LD': // current line down
522 mCursorY += mActiveScaleY;
523 break;
524
525 case 'ST': { // string terminator
526 s32 width = getNumberS32(strPtr, mActiveFontWidth, mActiveFontWidth, 10);
527 if (width > 0) {
528 mActiveFontWidth = width;
529 }
530 } break;
531 case 'CC': { // char color

Callers

nothing calls this directly

Calls 2

isLeadByteMethod · 0.80
setGradColorMethod · 0.45

Tested by

no test coverage detected