Beispiel #1
0
/*  Create a display list for each of 6 characters	*/
static void init (void)
{
    GLuint base;

    glShadeModel (GL_FLAT);

    base = glGenLists (128);
    glListBase(base);
    glNewList(base+'A', GL_COMPILE);
    drawLetter(Adata);
    glEndList();
    glNewList(base+'E', GL_COMPILE);
    drawLetter(Edata);
    glEndList();
    glNewList(base+'P', GL_COMPILE);
    drawLetter(Pdata);
    glEndList();
    glNewList(base+'R', GL_COMPILE);
    drawLetter(Rdata);
    glEndList();
    glNewList(base+'S', GL_COMPILE);
    drawLetter(Sdata);
    glEndList();
    glNewList(base+' ', GL_COMPILE);
    glTranslatef(8.0, 0.0, 0.0);
    glEndList();
}
Beispiel #2
0
void HackspaceSequence::next() {
	if (transPos == -1) {
		drawLetter(text[letterNo], 0);
		drawLetter(text[letterNo], 1);

		delay = 100;

		letterNo++;
		if (letterNo == TEXT_LEN)
			letterNo = -1;
	}

	else {
		Translate(0, 1, 0);
		delay = 10;
	}

	transPos++;
	if (transPos == 8)
	{
		transPos = -1;
		if (letterNo == -1)
			finished = true;
	}
}
void CHierarchicalDisplayList7_3::initStrokedFont()
{
	GLuint base;
	base = glGenLists(128);

	glNewList(base + 'A' -1, GL_COMPILE);
	drawLetter(Adata);
	glEndList();

	glNewList(base + 'E' - 1, GL_COMPILE);
	drawLetter(Edata);
	glEndList();

	glNewList(base + 'P' - 1, GL_COMPILE);
	drawLetter(Pdata);
	glEndList();

	glNewList(base + 'R' - 1, GL_COMPILE);
	drawLetter(Rdata);
	glEndList();

	glNewList(base + 'S' - 1, GL_COMPILE);
	drawLetter(Sdata);
	glEndList();

	glNewList(base + ' ' - 1, GL_COMPILE);
	glTranslatef(0.1, 0.0, 0.0);
	glEndList();
}
Beispiel #4
0
void drawRPanel() {
    int y;
    int ml;
    if ( left >= 0 ) {
        drawString(lStr, 40+480, 280, 18, 1, 200, 200, 222);
        drawLetter(left, 40+480, 420, 18, 1, 230, 180, 150);
        switch ( mode ) {
            case NORMAL_MODE:
                drawString(bStr, 90+480, 280, 18, 1, 200, 200, 222);
                drawLetter(bomb, 90+480, 420, 18, 1, 230, 180, 150);
                break;
            case PSY_MODE:
                ml = ship.grzCnt/40;
                drawBox(550, 460, 50, 8, 120, 120, 120);
                drawBox(500+ml, 460, ml, 8, 210, 210, 240);
                break;
            case GW_MODE:
                ml = (ship.rfMtr-ship.rfMtrDec)/40;
                drawBox(550, 460, 50, 8, 120, 120, 120);
                drawBox(500+ml, 460, ml, 8, 210, 240, 210);
                if ( ml >= 50 ) {
                    drawString(okStr, 540, 460, 10, 0, 230, 240, 230);
                }
                break;
        }
    }
    y = 24;
    drawString(stageStr, 124+480, y, 24, 1, 200, 200, 222);
    y += 24*1.7f*2;
    drawLetter(38, 124+480, y, 24, 1, 200, 200, 222);
    y += 24*1.7f;
    drawNumRight(scene+1, 124+480, y, 24, 200, 200, 222);
}
//senquack - some conversion to fixed point
//void drawRPanel() {
//  int y;
//  int ml;
//  if ( left >= 0 ) {
//    drawString(lStr, 40+480, 280, 18, 1, 200, 200, 222);
//    drawLetter(left, 40+480, 420, 18, 1, 230, 180, 150);
//    switch ( mode ) {
//    case NORMAL_MODE:
//      drawString(bStr, 90+480, 280, 18, 1, 200, 200, 222);
//      drawLetter(bomb, 90+480, 420, 18, 1, 230, 180, 150);
//      break;
//    case PSY_MODE:
//      ml = ship.grzCnt/40;
//      drawBox(550, 460, 50, 8, 120, 120, 120);
//      drawBox(500+ml, 460, ml, 8, 210, 210, 240);
//      break;
//    case GW_MODE:
//      ml = (ship.rfMtr-ship.rfMtrDec)/40;
//      drawBox(550, 460, 50, 8, 120, 120, 120);
//      drawBox(500+ml, 460, ml, 8, 210, 240, 210);
//      if ( ml >= 50 ) {
//	drawString(okStr, 540, 460, 10, 0, 230, 240, 230);
//      }
//      break;
//    }
//  }
//  y = 24;
//  drawString(stageStr, 124+480, y, 24, 1, 200, 200, 222);
//  y += 24*1.7f*2;
//  drawLetter(38, 124+480, y, 24, 1, 200, 200, 222);
//  y += 24*1.7f;
//  drawNumRight(scene+1, 124+480, y, 24, 200, 200, 222);
//}
void drawRPanel() {
   int y;
   int ml;

   // Show FPS 
   if (settings.show_fps) { 
     drawString(fpsStr, 10, 430, 10, 0, 200, 200, 200);
     drawNumHoriz(fps(), 10, 460, 10, 200, 200, 200);
   }

   if ( left >= 0 ) {
      drawString(lStr, 40+480, 280, 18, 1, 200, 200, 222);
      drawLetter(left, 40+480, 420, 18, 1, 230, 180, 150);
      switch ( mode ) {
         case NORMAL_MODE:
            drawString(bStr, 90+480, 280, 18, 1, 200, 200, 222);
            drawLetter(bomb, 90+480, 420, 18, 1, 230, 180, 150);
            break;
         case PSY_MODE:
            ml = ship.grzCnt/40;
#ifdef FIXEDMATH
            drawBox(INT2FNUM(550), INT2FNUM(460), INT2FNUM(50), INT2FNUM(8), 120, 120, 120);
            drawBox(INT2FNUM(500+ml), INT2FNUM(460), INT2FNUM(ml), INT2FNUM(8), 210, 210, 240);
#else
            drawBox(550, 460, 50, 8, 120, 120, 120);
            drawBox(500+ml, 460, ml, 8, 210, 210, 240);
#endif //FIXEDMATH
            break;
         case GW_MODE:
            ml = (ship.rfMtr-ship.rfMtrDec)/40;
#ifdef FIXEDMATH
            drawBox(INT2FNUM(550), INT2FNUM(460), INT2FNUM(50), INT2FNUM(8), 120, 120, 120);
            drawBox(INT2FNUM(500+ml), INT2FNUM(460), INT2FNUM(ml), INT2FNUM(8), 210, 240, 210);
#else
            drawBox(550, 460, 50, 8, 120, 120, 120);
            drawBox(500+ml, 460, ml, 8, 210, 240, 210);
#endif //FIXEDMATH
            if ( ml >= 50 ) {
               drawString(okStr, 540, 460, 10, 0, 230, 240, 230);
            }
            break;
      }
   }
   y = 24;
   drawString(stageStr, 124+480, y, 24, 1, 200, 200, 222);
   y += 24*1.7f*2;
   drawLetter(38, 124+480, y, 24, 1, 200, 200, 222);
   y += 24*1.7f;
   drawNumRight(scene+1, 124+480, y, 24, 200, 200, 222);
}
Beispiel #6
0
void drawTitle() {
    int i;
    int r, g, b;
    int sx, sy;
    char *stgChr = "STAGE";
    char *quitChr = "QUIT";
    char *mdChr[] = {"NORMAL MODE", "PSY MODE", "IKA MODE", "GW MODE"};
    int mdChrX[] = {270, 330, 330, 350};
    char mdIni[] = {'N', 'P', 'I', 'G'};
    drawTitleBoard();
    for ( i=-MODE_NUM ; i<STAGE_NUM+1 ; i++ ) {
        if ( i < 0 ) {
            if ( 4+i == mode ) {
                r = 100; g = 100; b = 240;
            } else {
                r = 150; g = 150; b = 200;
            }
        } else if ( i < QUIT_STAGE_NUM && hiScore.cleard[mode][i] ) {
            r = 240; g = 180; b = 180;
        } else {
            r = 210; g = 210; b = 240;
        }
        sx = stageX[i+MODE_NUM]; sy = stageY[i+MODE_NUM];
        if ( i == slcStg ) {
            int sz = STG_BOX_SIZE*3/2;
            if ( titleCnt < 16 ) sz = sz*titleCnt/16;
            drawBox(sx, sy, sz, sz, r, g, b);
            sz = sz*3/5;
            if ( i < 0 ) {
                int md = MODE_NUM+i;
                drawString(mdChr[md], mdChrX[md], 133, 12, 0, 150, 150, 200);
                drawLetter(mdIni[md]-'A'+10, sx, sy, sz, 0, 150, 150, 240);
            } else if ( i < QUIT_STAGE_NUM  ) {
                makeStageStr(i);
                drawString(stageStr, sx-sz, sy, sz, 0, 210, 210, 240);
                drawString(stgChr, 330, 133, 12, 0, 210, 210, 240);
                drawString(stageStr, 445, 133, 12, 0, 210, 210, 240);
                drawNumCenter(hiScore.score[mode][i], 466, 168, 12, 210, 210, 240);
            } else {
                drawLetter('Q'-'A'+10, sx, sy, sz, 0, 210, 210, 240);
                drawString(quitChr, 410, 133, 12, 0, 210, 210, 240);
            }
        } else {
            drawBox(sx, sy, STG_BOX_SIZE/2, STG_BOX_SIZE/2, r*2/3, g*2/3, b*2/3);
        }
    }
    drawString(mdChr[mode], mdChrX[mode], 455, 12, 0, 150, 150, 200);
}
Beispiel #7
0
void displaySaucerBonus(bool reset){
	int startRow = getSaucerPos().y;
	int startCol = getSaucerPos().x;
	if (startCol < 60)
		startCol = 60;
	if (startCol > 580)
		startCol = 580;
	int NumColor = WHITE;
	int i ;
	int scoreIncrease = getSaucerBonus();
	if (scoreIncrease < TWO_DIGITS)
		i = 1;
	else if (scoreIncrease < THREE_DIGITS)
		i = 2;
	else if (scoreIncrease < FOUR_DIGITS)
		i = 3;
	else
		i = 4;
	int iter = 0;
	for (iter = 0; iter < i; iter++){
		int temp = 0;
		temp = scoreIncrease % 10;
		scoreIncrease /= 10;
		drawLetter(reset, NumColor, startRow, startCol, NumArray[temp]);
		startCol -= KERNING;
	}
}
Beispiel #8
0
void drawBossScoreAtr() {
    if ( bsCnt < 32 ) return;
    drawNumCenter(bossScore, 450, 240, 16, 200, 200, 220);
    if ( bsCnt < 64 ) return;
    drawBox(320, 272, 150, 4, 200, 200, 220);
    if ( bsCnt < 96 ) return;
    drawNumCenter(1, 230, 306, 16, 200, 200, 220);
    drawLetter(39, 260, 306, 16, 0, 200, 200 ,220);
    drawNumCenter(shipUsed, 340, 306, 16, 200, 200, 220);
    if ( mode == NORMAL_MODE ) {
        drawLetter(39, 380, 306, 16, 0, 200, 200 ,220);
        drawNumCenter(bombUsed, 450, 306, 16, 200, 200, 220);
    }
    if ( bsCnt < 128 ) return;
    drawNumCenter(bsAdd, 450, 380, 19, 200, 220, 200);
    if ( status == STAGE_CLEAR ) {
        char *scChr = "STAGE CLEAR";
        drawString(scChr, 190, 440, 15, 0, 180, 220, 180);
    }
}
Beispiel #9
0
void Fonts::mostra_text(char cadena[], float x, float y){
    unsigned int tmp;

	glEnable(GL_TEXTURE_2D);

    for(tmp=0; tmp < strlen(cadena); tmp++) {         
		drawLetter(cadena[tmp], x + tmp*28, y);
	}

	
	glDisable(GL_TEXTURE_2D);
}
void Alphabet3D::drawWord(std::string text, vector3Df offset, Letter2D::letterDrawMode drawMode)
{
	bool red = true;
	//use the offset passed to draw all letters
	vector3Df stringOffset = offset;
	for(int i=0;i<text.size();i++){
		//draw a letter using the current offset and draw mode passed
		drawLetter(text[i],vector3Df(stringOffset.x,stringOffset.y,stringOffset.z),drawMode);
		//update offset after each letter
		stringOffset.x += getLetterSize(text[i]).x;
	}
}
Beispiel #11
0
// Draw the stats (score and lives) on the screen.
void drawStats(){
	int startRow = STATS_START_ROW;
	int startCol = STATS_START_COL;
	int letterColor = WHITE;
	// Draw the Score
	drawLetter(false, letterColor, startRow, startCol, S_6x5); // Draw S
	startCol += KERNING;
	drawLetter(false, letterColor, startRow, startCol, C_6x5); // Draw C
	startCol += KERNING;
	drawLetter(false, letterColor, startRow, startCol, O_6x5); // Draw O
	startCol += KERNING;
	drawLetter(false, letterColor, startRow, startCol, R_6x5); // Draw R
	startCol += KERNING;
	drawLetter(false, letterColor, startRow, startCol, E_6x5); // Draw E
	startCol = startCol + KERNING + KERNING;
	updateScore();
	startCol += KERNING_CENTRE;

	// Draw the Lives
	drawLetter(false, letterColor, startRow, startCol, L_6x5); // Draw L
	startCol += KERNING;
	drawLetter(false, letterColor, startRow, startCol, I_6x5); // Draw I
	startCol += KERNING_SMALL;
	drawLetter(false, letterColor, startRow, startCol, V_6x5); // Draw V
	startCol += KERNING;
	drawLetter(false, letterColor, startRow, startCol, E_6x5); // Draw E
	startCol += KERNING;
	drawLetter(false, letterColor, startRow, startCol, S_6x5); // Draw S
	startCol = startCol + KERNING + KERNING;
	startRow -= KERNING_SMALL;
	drawTank(true, startRow, startCol);
	startCol += TANK_KERNING;
	drawTank(true, startRow, startCol);
	startCol += TANK_KERNING;
	drawTank(true, startRow, startCol);
	setInit(false);


}
Beispiel #12
0
void drawGameOver(){
	int startRow = GAME_OVER_START_ROW;
	int startCol = GAME_OVER_START_COL;
	int letterColor = RED;
	drawLetter(false, letterColor, startRow, startCol, G_6x5); // Draw G
	startCol += KERNING;
	drawLetter(false, letterColor, startRow, startCol, A_6x5); // Draw A
	startCol += KERNING;
	drawLetter(false, letterColor, startRow, startCol, M_6x5); // Draw M
	startCol += KERNING;
	drawLetter(false, letterColor, startRow, startCol, E_6x5); // Draw E
	startCol = startCol + KERNING + KERNING;

	drawLetter(false, letterColor, startRow, startCol, O_6x5); // Draw O
	startCol += KERNING;
	drawLetter(false, letterColor, startRow, startCol, V_6x5); // Draw V
	startCol += KERNING;
	drawLetter(false, letterColor, startRow, startCol, E_6x5); // Draw E
	startCol += KERNING;
	drawLetter(false, letterColor, startRow, startCol, R_6x5); // Draw R
}
Beispiel #13
0
void drawString(char *str, int lx, int ly, int ltSize, int d,
		int r, int g, int b) {
  int x = lx, y = ly;
  int i, c, idx;
  for ( i=0 ; ; i++ ) {
    if ( str[i] == '\0' ) break;
    c = str[i];
    if ( c != ' ' ) {
      if ( c >= '0' && c <='9' ) {
	idx = c-'0';
      } else if ( c >= 'A' && c <= 'Z' ) {
	idx = c-'A'+10;
      } else if ( c >= 'a' && c <= 'z' ) {
	idx = c-'a'+10;
      } else if ( c == '.' ) {
	idx = 36;
      } else if ( c == '-' ) {
	idx = 38;
      } else if ( c == '+' ) {
	idx = 39;
      } else {
	idx = 37;
      }
      drawLetter(idx, x, y, ltSize, d, r, g, b);
    }
    switch ( d ) {
    case 0:
      x += ltSize*1.7f;
      break;
    case 1:
      y += ltSize*1.7f;
      break;
    case 2:
      x -= ltSize*1.7f;
      break;
    case 3:
      y -= ltSize*1.7f;
      break;
    }
  }
}
Beispiel #14
0
void ViewerText::draw(int x, int y, const char* fmt,...)
{
  int i=0, j=0;
  textColor_.setGL();
  char txt[256];
  va_list argp;
  va_start(argp, fmt);
  vsprintf(txt, fmt, argp);
  va_end(argp);
  while(i<256 && txt[i] != 0) {
    if (txt[i]=='\n') {
      y+=textSize_;
      j=0;
      ++i;
      continue;
    }
    drawLetter(x+j*textSize_, y, txt[i]);
    ++i;
    ++j;
  }
}
Beispiel #15
0
void updateScore() {
	int startRow = STATS_START_ROW;
	int startCol = SCORE_START_COL;
	int NumColor = GREEN;
	unsigned int score = getScore();
	int i ;
	if (score < TWO_DIGITS)
		i = 1;
	else if (score < THREE_DIGITS)
		i = 2;
	else if (score < FOUR_DIGITS)
		i = 3;
	else
		i = 4;
	int iter = 0;
	for (iter = 0; iter < i; iter++){
		int temp = 0;
		temp = score % TWO_DIGITS;
		score /= TWO_DIGITS;
		drawLetter(false, NumColor, startRow, startCol, NumArray[temp]);
		startCol -= KERNING;
	}
}
void drawRPanel() {
  int y;
  char *str = "LEFT";
  clearRPanel();
  if ( left >= 0 ) {
    drawString(str, 34, 272, 24, 3, 16*1-12, 16*1-3, rpbuf);
    drawLetter(left, 34, 450, 24, 3, 16*2-10, 16*2-1, rpbuf);
  }
  y = 24;
  if ( !endless ) {
    y = drawNumRight(stage+1, 124, y, 24, 16*1-12, 16*1-3);
    drawLetter(38, 124, y, 24, 3,  16*1-12, 16*1-3, rpbuf);
    y += 24*1.7f;
    if ( scene >= 10 ) {
      drawLetter('E'-'A'+10, 124, y, 24, 3, 16*1-12, 16*1-3, rpbuf);
      return;
    }
  }
  drawNumRight(scene+1, 124, y, 24, 16*1-12, 16*1-3);
  if ( hsScene >= 0 ) {
    y = SCENE_STAT_SIZE;
    y = drawNumRight(stage+1, SCENE_STAT_X, y, SCENE_STAT_SIZE, 16*1-12, 16*1-3);
    drawLetter(38, SCENE_STAT_X, y, SCENE_STAT_SIZE, 3,  16*1-12, 16*1-3, rpbuf);
    y += SCENE_STAT_SIZE*1.7f;
    y = drawNumRight(hsScene+1, SCENE_STAT_X, y, SCENE_STAT_SIZE, 16*1-12, 16*1-3);
    y += SCENE_STAT_SIZE*1.7f*2;
    y = drawNumRight(hsScSc, SCENE_STAT_X, y, SCENE_STAT_SIZE, 16*1-12, 16*1-3);
    y += SCENE_STAT_SIZE*1.7f;
    if ( hsOfs >= 0 ) {
      drawLetter(39, SCENE_STAT_X, y, SCENE_STAT_SIZE, 3,  16*2-12, 16*2-3, rpbuf);
      y += SCENE_STAT_SIZE*1.7f;
      drawNumRight(hsOfs, SCENE_STAT_X, y, SCENE_STAT_SIZE, 16*2-12, 16*2-3);
    } else {
      drawLetter(38, SCENE_STAT_X, y, SCENE_STAT_SIZE, 3,  16*4-12, 16*4-3, rpbuf);
      y += SCENE_STAT_SIZE*1.7f;
      drawNumRight(-hsOfs, SCENE_STAT_X, y, SCENE_STAT_SIZE, 16*4-12, 16*4-3);
    }
  }
}
//senquack - partial conversion to fixed point
//void drawTitle() {
//  int i;
//  int r, g, b;
//  int sx, sy;
//  char *stgChr = "STAGE";
//  char *quitChr = "QUIT";
//  char *mdChr[] = {"NORMAL MODE", "PSY MODE", "IKA MODE", "GW MODE"};
//  int mdChrX[] = {270, 330, 330, 350};
//  char mdIni[] = {'N', 'P', 'I', 'G'};
//  drawTitleBoard();
//  
//  for ( i=-MODE_NUM ; i<STAGE_NUM+1 ; i++ ) {
//    if ( i < 0 ) {
//      if ( 4+i == mode ) {
//	r = 100; g = 100; b = 240;
//      } else {
//	r = 150; g = 150; b = 200;
//      }
//    } else if ( i < QUIT_STAGE_NUM && hiScore.cleard[mode][i] ) {
//      r = 240; g = 180; b = 180;
//    } else {
//      r = 210; g = 210; b = 240;
//    }
//    sx = stageX[i+MODE_NUM]; sy = stageY[i+MODE_NUM];
//    if ( i == slcStg ) {
//      int sz = STG_BOX_SIZE*3/2;
//      if ( titleCnt < 16 ) sz = sz*titleCnt/16;
//      drawBox(sx, sy, sz, sz, r, g, b);
//      sz = sz*3/5;
//      if ( i < 0 ) {
//	int md = MODE_NUM+i;
//	drawString(mdChr[md], mdChrX[md], 133, 12, 0, 150, 150, 200);
//	drawLetter(mdIni[md]-'A'+10, sx, sy, sz, 0, 150, 150, 240);
//      } else if ( i < QUIT_STAGE_NUM  ) {
//	makeStageStr(i);
//	drawString(stageStr, sx-sz, sy, sz, 0, 210, 210, 240);
//	drawString(stgChr, 330, 133, 12, 0, 210, 210, 240);
//	drawString(stageStr, 445, 133, 12, 0, 210, 210, 240);
//	drawNumCenter(hiScore.score[mode][i], 466, 168, 12, 210, 210, 240);
//      } else {
//	drawLetter('Q'-'A'+10, sx, sy, sz, 0, 210, 210, 240);
//	drawString(quitChr, 410, 133, 12, 0, 210, 210, 240);
//      }
//    } else {
//      drawBox(sx, sy, STG_BOX_SIZE/2, STG_BOX_SIZE/2, r*2/3, g*2/3, b*2/3);
//    }
//  }
//  drawString(mdChr[mode], mdChrX[mode], 455, 12, 0, 150, 150, 200);
//}
void drawTitle() {
   int i;
   int r, g, b;
   int sx, sy;
   char *stgChr = "STAGE";
   char *quitChr = "QUIT";
   char *mdChr[] = {"NORMAL MODE", "PSY MODE", "IKA MODE", "GW MODE"};
   int mdChrX[] = {270, 330, 330, 350};
   char mdIni[] = {'N', 'P', 'I', 'G'};
   drawTitleBoard();

   for ( i=-MODE_NUM ; i<STAGE_NUM+1 ; i++ ) {
      if ( i < 0 ) {
         if ( 4+i == mode ) {
            r = 100; g = 100; b = 240;
         } else {
            r = 150; g = 150; b = 200;
         }
      } else if ( i < QUIT_STAGE_NUM && hiScore.cleard[mode][i] ) {
         r = 240; g = 180; b = 180;
      } else {
         r = 210; g = 210; b = 240;
      }
      sx = stageX[i+MODE_NUM]; sy = stageY[i+MODE_NUM];
      if ( i == slcStg ) {
         int sz = STG_BOX_SIZE*3/2;
         if ( titleCnt < 16 ) sz = sz*titleCnt/16;
#ifdef FIXEDMATH
         drawBox(INT2FNUM(sx), INT2FNUM(sy), INT2FNUM(sz), INT2FNUM(sz), r, g, b);
#else
         drawBox(sx, sy, sz, sz, r, g, b);
#endif //FIXEDMATH
         sz = sz*3/5;
         if ( i < 0 ) {
            int md = MODE_NUM+i;
            drawString(mdChr[md], mdChrX[md], 133, 12, 0, 150, 150, 200);

            // letter at top N/P/G/I
            drawLetter(mdIni[md]-'A'+10, sx, sy, sz, 0, 150, 150, 240);
         } else if ( i < QUIT_STAGE_NUM  ) {
            makeStageStr(i);

            // 2-char stage ID below (1a, 2a, etc)
            drawString(stageStr, sx-sz, sy, sz, 0, 210, 210, 240);

            drawString(stgChr, 330, 133, 12, 0, 210, 210, 240);
            drawString(stageStr, 445, 133, 12, 0, 210, 210, 240);
            drawNumCenter(hiScore.score[mode][i], 466, 168, 12, 210, 210, 240);
         } else {
            // "q" for quit
            drawLetter('Q'-'A'+10, sx, sy, sz, 0, 210, 210, 240);

            drawString(quitChr, 410, 133, 12, 0, 210, 210, 240);
         }
      } else {
#ifdef FIXEDMATH
         drawBox(INT2FNUM(sx), INT2FNUM(sy), INT2FNUM(STG_BOX_SIZE)/2, INT2FNUM(STG_BOX_SIZE)/2, r*2/3, g*2/3, b*2/3);
#else
         drawBox(sx, sy, STG_BOX_SIZE/2, STG_BOX_SIZE/2, r*2/3, g*2/3, b*2/3);
#endif //FIXEDMATH
      }
   }
   drawString(mdChr[mode], mdChrX[mode], 455, 12, 0, 150, 150, 200);

   // senquack - visual indicator for added cheats (they disable saving of high-scores however)
   if (settings.extra_lives > 0 || settings.extra_bombs > 0) {
      char *cheat_str = "CHEAT";
      drawString(cheat_str, 285, 230, 12, 0, 255, 100, 100);
      cheat_str = "MODE";
      drawString(cheat_str, 295, 270, 12, 0, 255, 100, 100);
   }
}
void drawRPanel_rotated() {
   int y;
   int ml;

   // Show FPS 
   if (settings.show_fps) { 
     drawString(fpsStr, 167, 68, 6, 0, 200, 200, 200);
     drawNumHoriz(fps(), 200, 68, 6, 200, 200, 200);
   }

   if ( left >= 0 ) {
      //orig; had to be adjusted below to support screen-rotation:
      //    drawString(lStr, 40+480, 280, 18, 1, 200, 200, 222);
      //    drawLetter(left, 40+480, 420, 18, 1, 230, 180, 150);
      drawString(lStr, 168, 33, 6, 0, 200, 200, 222);
      drawLetter(left, 213, 33, 6, 0, 230, 180, 150);

      switch ( mode ) {
         case NORMAL_MODE:
            //orig; had to be adjusted below to support screen-rotation:
            //      drawString(bStr, 90+480, 280, 18, 1, 200, 200, 222);
            //      drawLetter(bomb, 90+480, 420, 18, 1, 230, 180, 150);
            drawString(bStr, 228, 33, 6, 0, 200, 200, 222);
            drawLetter(bomb, 273, 33, 6, 0, 230, 180, 150);
            break;
         case PSY_MODE:
            ml = ship.grzCnt/40;
            //orig; had to be adjusted below to support screen-rotation:
            //      drawBox(550, 460, 50, 8, 120, 120, 120);
            //      drawBox(500+ml, 460, ml, 8, 210, 210, 240);
#ifdef FIXEDMATH
            drawBox(INT2FNUM(425), INT2FNUM(20), INT2FNUM(50), INT2FNUM(8), 120, 120, 120);
            drawBox(INT2FNUM(375+ml), INT2FNUM(20), INT2FNUM(ml), INT2FNUM(8), 210, 210, 240);
#else
            drawBox(425, 20, 50, 8, 120, 120, 120);
            drawBox(375+ml, 20, ml, 8, 210, 210, 240);
#endif //FIXEDMATH
            break;
         case GW_MODE:
            ml = (ship.rfMtr-ship.rfMtrDec)/40;
            //orig; had to be adjusted below to support screen-rotation:
            //      drawBox(550, 460, 50, 8, 120, 120, 120);
            //      drawBox(500+ml, 460, ml, 8, 210, 240, 210);
#ifdef FIXEDMATH
            drawBox(INT2FNUM(425), INT2FNUM(20), INT2FNUM(50), INT2FNUM(8), 120, 120, 120);
            drawBox(INT2FNUM(375+ml), INT2FNUM(20), INT2FNUM(ml), INT2FNUM(8), 210, 240, 210);
#else
            drawBox(425, 20, 50, 8, 120, 120, 120);
            drawBox(375+ml, 20, ml, 8, 210, 240, 210);
#endif //FIXEDMATH

            if ( ml >= 50 ) {
               //	drawString(okStr, 540, 460, 10, 0, 230, 240, 230);
            //orig; had to be adjusted below to support screen-rotation:
               drawString(okStr, 415, 20, 10, 0, 230, 240, 230);
            }
            break;
      }
   }

   //these are disabled under rotated mode:
   //  y = 24;
   //  drawString(stageStr, 124+480, y, 24, 1, 200, 200, 222);
   //  y += 24*1.7f*2;
   //  drawLetter(38, 124+480, y, 24, 1, 200, 200, 222);
   //  y += 24*1.7f;
   //  drawNumRight(scene+1, 124+480, y, 24, 200, 200, 222);

   if (status != TITLE)
   {
      if (mode == NORMAL_MODE) {
         drawString(stageStr, 288, 33, 6, 0, 200, 200, 222);
         drawLetter(38, 305, 33, 6, 0, 200, 200, 222);
         drawNumCenter(scene+1, 312, 33, 6, 200, 200, 222);
      } else {
         // Draw this farther to left since we're not displaying bomb amount in these modes
         drawString(stageStr, 228, 33, 6, 0, 200, 200, 222);
         drawLetter(38, 245, 33, 6, 0, 200, 200, 222);
         drawNumCenter(scene+1, 252, 33, 6, 200, 200, 222);
      }
   }

}