 void symbolGlitchSizeScene() {
 		TV.clear_screen();
 		const char* s = getSignSymbol(random(SIGN_COUNT));
-		TV.bitmap(0, 0, s, 0, IMG_SIZE - random(0, 10), IMG_SIZE - random(0, 10));
+		TV.bitmap(BMP_X, BMP_Y, s, 0, IMG_SIZE - random(0, 10), IMG_SIZE - random(0, 10));
 		TV.delay(150);
 
 		if (checkSceneEnded(15)) {
 				int mid = HEIGHT / 2;
 				const char* word = errors_words[random(ERRORS_WORDS_COUNT)];
+				int xOffset = (strlen(word) * FONT_W) / 2;
+				int yOffset = FONT_H / 2;
 
 				for (int i = 0; i < 40; i++) { //flashes
-						TV.draw_rect(0, mid - 5, WIDTH, 10, 0, 0);
-						TV.set_cursor(0, HEIGHT / 2);
+						TV.draw_rect(0, mid - FONT_H, WIDTH, FONT_H * 2, 0, 0);
+						TV.set_cursor((WIDTH / 2) - xOffset, (HEIGHT / 2) - yOffset);
 						if (i % 2 == 0) {
 								TV.print(word);
 						}

		if (changed) {
				int sign = random(SIGN_COUNT);
				const char* s = getSignSymbol(sign);
				TV.bitmap(0, 0, s);
				return;
		}



void planetSymbolsFastScene() {
		const char* s = getPlanetSymbol(fssI % PLANET_COUNT);
		TV.bitmap(BMP_X, BMP_Y, s);
		TV.delay(250);
		fssI++;

		checkSceneEnded(20);
}

char *cursorWord = NULL;
int cursorIdx = 0;
void wordCursorScene(bool changed) {
		if (changed) {
				cursorWord = signs_words[SIGN_COUNT + random(SIGN_COUNT)];
				cursorIdx = 0;
		}

		if (cursorWord[cursorIdx]) {
				char randChar = random(65, 91);
				TV.set_cursor(cursorIdx * FONT_W, (HEIGHT / 2) - (FONT_H / 2));

				TV.print(randChar);
			
				if (cursorWord[cursorIdx] == randChar) {
					cursorIdx++;
				}

				TV.delay(50);

				if (!cursorWord[cursorIdx]) {
					TV.print(" OK.");
				}
		}

		checkSceneEnded(15);
}

void wormholeScene(bool changed) {
		TV.clear_screen();
		int circleCount = random(3, 7);
		for (int i = 0; i < circleCount; i++) {
				TV.draw_circle(WIDTH / 2, HEIGHT / 2, random(HEIGHT / 2), WHITE, BLACK);
		}

		TV.delay(120);

		checkSceneEnded(8);
}

void loop() {
