the cutting room mirror

ru

UNDERTALE is the indie RPG where no one has to die.

UNDERTALE — это инди-RPG, в которой никому не обязательно умирать. Вдохновлённая серией игр EarthBound, особенно Mother 3, а также Yume Nikki и Cave Story, она получила признание критиков за интересных персонажей, взаимосвязанный саундтрек и неожиданные повороты стандартных RPG-тропов. Будучи детищем одного из композиторов Homestuck, игра была профинансирована за счёт краудфандинга и поддержана сообществом фанатов, которое сформировалось вокруг этого комикса, особенно во время его перерыва. На некоторое время эту игру было трудно не заметить.

Режим разработчикаРежим травления багов. ГрафикаВ этой игре так много псов! Есть даже НЕИСПОЛЬЗУЕМЫЕ псы! КомнатыОт подставок для конфет до говорливых NPC. ТекстЯ НИКОГДА НЕ БЫЛ ОДНИМ ИЗ БЕПИСОВ. Различия версииМножество альтернативных возможностей, создаваемых пацифистом или убийцей.

Послания разработчика#

Предупреждение: «Не извлекать спрайты!»#

Версия 1.00#

Пожалуйста, не выкладывайте эти огромные спрайт-листы в интернет.
Большинство этих непонятных штук используются, поэтому я бы хотел, чтобы их сначала увидели в контексте.
подождите хотя бы год...
если вы извлекаете только действительные игровые спрайты для spriter's resource или чего-то такого, чтобы их было проще найти, то мне без разницы

Картинка abc_1111_0 содержит сообщение, адресованное людям, занимающимся извлечением спрайтов для размещения на сайтах, подобных Spriter's Resource. В этом сообщении содержится просьба подождать хотя бы год перед тем, как выкладывать спрайт-листы в интернет.

Игры, созданные на Game Maker, например Undertale, хранят все свои спрайты в крупных PNG-спрайт-листах, а не в виде отдельных файлов для каждого спрайта или персонажа. Поэтому, если кто-то захочет извлечь спрайт-листы, самым простым вариантом будет загрузить их целиком без изменений... Однако такой подход приведёт к тому, что на листах останутся и спрайты с сюжетными спойлерами.

Необычное имя файла было выбрано, чтобы оно оказалось в начале алфавитного списка файлов и стало более заметным... что не имеет смысла, так как список файлов виден только в том случае, если спрайты разделены по их внутренним именам. Упс. Это было исправлено в более поздних версиях.

Версия 1.001#

 
знаешь, что меня
    ВЫМОРАЖИВАЕТ?

я тебе скажу:
              бепис

ЭТОТ ВКУС
   этот запах
      эта текстура

эй...
      у тебя
          слюни потекли...

Версия 1.001 заменяет просьбу не извлекать спрайт-листы на этот абстрактный эротический монолог, который отсылает к фразе персонажа из Moonside в игре Earthbound. Говорящий заявляет, что ненавидит любимую еду игрока. Тоби Фокс, являясь фанатом EarthBound, во многом вдохновлялся этой игрой при создании Undertale. «Бепис» — это забавное искажённое написание слова «пепси», которое разработчики считают просто смешным.

Этот текст не несёт никакого реального смысла, а изменение предыдущей просьбы может быть истолковано как разрешение на публикацию спрайт-листов. Это подтверждается этим мрачным письмом.

Предупреждение: «Не спойлери игру!»#

abc_123_a.ogg

Оригинал

Перевод

Hello. He-he-he-he-have some respect and don't spoil the game. It's impossible to have mysteries nowadays, because of nosy people like you. Please keep all of this between us. If you post it online, I won't make any more secrets. No one will be impressed. It will be your fault! He-he-he-he-ha-he-he-ha-he-he.

Привет, при-при-прояви немного уважения, не спойлери игру. В наше время невозможно держать секреты — из-за таких любопытных людей, как ты. Давай оставим всё это между нами. Если ты выложишь это в сеть, я больше не буду делать секреты. Никто не будет впечатлён. Это будет твоя-я вина-а! Хе-хе-хе-хэ-ха-хе.

Это аудиофайл с восемью голосами синтеза речи, которые предупреждают людей не выкладывать секреты игры в интернет. Но кто в здравом уме стане... хотя погодите...

Необычное имя файла было выбрано, чтобы он оказался в начале алфавитного списка файлов и стал более заметным. Все остальные музыкальные файлы и звуковые эффекты в формате OGG, находящиеся в папке игры, имеют префикс либо mus_, либо snd_.

Этот файл был обновлён в версии 1.001, практически полностью удалив всё содержимое оригинального аудиофайла.

Сообщение от Тоби Фокса#

To do:
Изменения в этом посте-1.001.

Часть очарования этой игры заключается в её тайнах: сколько вариантов или секретов она скрывает? Если вы читаете это, пожалуйста, не публикуйте это сообщение или содержащуюся здесь информацию где-либо. Иначе секреты утратят свой смысл.
Кстати, большая часть, казалось бы, неиспользуемого текста или файлов всё-таки задействована.
Если вы смогли найти в игре контекст для какого-либо ресурса, вы можете это продемонстрировать. Если же не смогли — это, скорее всего, означает, что вы недостаточно усердствовали. Всё, что действительно остаётся неиспользованным, я, возможно, опубликую сам позже.
Жить в мире, где ответы можно просто «вытянуть» из кода... ваша нетерпеливость ЯВНО сыграла с вами злую шутку, не так ли?

Данное сообщение добавляется в скрипт attention_hackerz_no_2, где оно задаётся в переменных с именами demonx, demony, demonz и demond соответственно. Эти сообщения, как следует из контекста, используются для предупреждения потенциальных взломщиков. Из-за названия скрипта, данные сообщения размещаются в начале внутреннего списка строк, что повышает вероятность их прочтения.

Однако в версии 1.001 весь текст был заменён на следующее:

Приветствую.
Вы выразились абсолютно ясно.
Понятно.
Я, ваш покорный слуга, буду следовать за вами до конца...

Переменные также были переименованы в demona, demonb, demonc и demond. Любопытно, что первая строка из сообщения версии 1.00 всё ещё присутствует вместе со связанной с ней переменной, но теперь она перенесена в скрипт scr_namingscreen_check, который отвечает за обработку пасхалок, связанных с именами.

Curiously, in 1.05, the copy in scr_namingscreen_check seems to have been changed.

v1.001

v1.05

Part of this game's charm is the mystery of how many options or secrets there are. If you are reading this, please don't post this message or this information anywhere. Or doing secrets will become pointless.

HE IS

To do:
investigate and elaborate. here is the image i used to describe the changes

For some reason, this change appears to have been exclusive to the Mac and Windows versions, with the Linux version and the console ports still having the "Part of this game's charm" message. Version 1.06's Windows and Mac releases seem to blank out the message, although some versions of 1.08 Windows and Mac seem to have the message "..." instead, while others seemingly return to the "Part of this game's charm" message. In particular, the Mac non-DRM release seems to return to the original message, while the Windows Steam and non-DRM releases have "...".

Xbox Datamining Congratulatory Message#

* (It's a picture of a dog juggling several balls.) * (You feel satisfaction that your hard work reverse engineering the encryption of the Xbox One has paid off.)

gml_Object_obj_xbox_controller_connect_Create_0 in the Xbox One (v1.12X+) version contains this congratulation for dataminers, appropriately stored in a variable named unusedstring. Toby's foresight is appreciated, considering how difficult Xbox One's security was to crack.

Note that there's no new line after the first sentence in the original string.

(Source: luigiutmc, original TCRF research (actual location))

Activity Levels#

Wait, we're categorizing this now?

Press ⇧ Shift or X five times at the title screen to get this handy screen.

If none of the requirements are met, "No Information" is shown instead.

Ball Jingle#

If the code "ball" is typed on the title screen, a jingle will play. The jingle itself is named snd_ballchime.ogg. In a 2025 interview with Famitsu, Toby would reveal that this jingle was originally made for a canceled, Panel de Pon-inspired project a friend of his was working on.

Всё что происходит в битвах#

Имена монстров#

ID

Английский

Японский

Перевод

1

TestFroggit

—

ТестФроггит

30

Agent

—

Агент

47

Bomb
ばくだん
Бомба

48

RG 03

—

КС 03

49

RG 04

—

КС 04

666

Gaster
ガスター
Гастер

ДЕЙСТВия#

   * Оценить         * Шепнуть
   * Пожать руку
   * Ошибка

At the very end of the ACT menu strings is this yet again generic error message, a placeholder for the ACT options of the fight against Asriel's true form.

Гастер#

Gaster (who has 666 for an enemy ID) has a complete set of stats in the code, all ridiculously high (to the point an enemy given these stats is borderline impossible to damage and getting hit insta-kills Frisk) and consisting only of numerous 6s. His EXP and GOLD are set to negative numbers, meaning the player should actually lose EXP and GOLD if they somehow won. They are as follows:

   ОЗ: 666666 
   АТ: 66666         ЗЩ: 66666
  ОП: -6666       МОНЕТ: -6666

Gaster also would have had a 666% chance to award an item with the ID 666 (which of course doesn't exist, as the item IDs only go up to 64) after battle... which would've worked if the item drop mechanic was even functional.

Встречи#

ID

Враг 0

Враг 1

Враг 2

Английский

Японский

Перевод

Примечания

1

ТестФроггит

ТестФроггит

ТестФроггит

* TestMonster and its cohorts
draw near!

—

* ТестМонстр и его когорта нарисовались неподалёку!

Появляются в TESTROOM.

14

Вегетоид

Лукс

* Vegetoid and Loox attacked!
* ベジトイドと ルークスが
  おそってきた!
* Вегетоид и Лукс атаковали!

31

Чиллдрейк

Чиллдрейк

* Chilldrakes flutter forth!
* いきがりバードが
  パタパタとんできた!
* Чиллдрейки выпархивают вперёд!

33

Айс Кэп

Сноудрейк

* Icecap and Snowdrake
  pose like bad guys.
* ヒョー坊と オワライチョウは
  ワルっぽいポーズをとった。
* Айс Кэп и Сноудрейк корчат из себя плохишей.

33

Айс Кэп

Чиллдрейк

* Icecap and Chilldrake
  pose like bad guys.
* ヒョー坊と いきがりバードは
  ワルっぽいポーズをとった。
* Айс Кэп и Чиллдрейк корчат из себя плохишей.

Альтернативная версия предыдущей встречи, если Сноудрейк был убит.

34

Джерри

* Jerry clings to you!
* ジェリーに つきまとわれている!
* Джерри липнет к вам!

46 (Старое)

Аарон

Вошуа

* You shouldn't read this.
* これは よまないで。
* Вам не следует это читать.

В сцене встречи Аарона и Вошуи, испугавшихся музыки Напстаблука, текст с описанием не должен отображаться.

61

Финальный Фроггит

* Final Froggit was already there,
  waiting for you.
* ファイナル・フロギーが
  まちかまえていた。
* Финальный Фроггит уже был здесь, поджидая вас.

Сообщение о встрече отображается некорректно: в игре запятая выводится на отдельной строке.

63

Вимсалот

* Whimsalot rushed in!
* ナキムシャが かけつけた!
* Вимсалот ворвался!

69

Бомба

* Defuse the bomb!
* ばくだんを かいじょしろ!
* Разрядите бомбу!

Эта бомба — уникальный, неиспользованный противник, который не имеет ограничения по времени, но во всём остальном ведёт себя так же, как используемая «пёс-бомба».

79

Вулкин

Вулкин

* A strange parade blocks the
  path.
* きみょうな しゅうだんに
  ゆくてを ふさがれた。
* Странный парад преграждает дорогу.

127

Вимсан

Парсник

* Whimsalot and Parsnik appeared.
* ナキムシャと パースニックが
  あらわれた。
* Вимсан и Парсник появлявились.

131

Парсник

Астигматизм

* Not only potatoes have eyes.
* “め”に どくが あるのは
  ジャガイモだけじゃない。
* Не только у картошки есть глазки.

133

Астигматизм

Мигоспел

Молдесса

* Looks like a real party.
* これぞ まさに “パーティ”だ。"
* Похоже на настоящую тусовку.

134

Вимсан

Парсник

Молдесса

* Party from Hell.
* じごくの “パーティ”だ。"
* Тусовка из ада.

141

Безумная Мяу-Мяу

* Mad Mew Mew blocks the way!
* ぷんすかみゅうみゅうに
  ゆくてを ふさがれた!
* Безумная Мяу-Мяу преграждает путь!

256

Азриэль

* ASRIEL's SOUL was awakened
  by the power of your
  friends!
* なかまの ちからで
  アズリエルのタマシイが
  めをさました!
* ДУШУ АЗРИЭЛЯ пробудила сила ваших друзей!

256

Азриэль

* It's time to say goodbye.
* これで おわかれだ。
* Время сказать «прощай».

Атаки#

Санс#

To do:
Проверьте это ещё раз.

Watch on YouTube

Sans' battle has some unused attacks. They, along with used attacks, are handled in the obj_sansb_body object.

Vertical Platforms - The attack is handled by obj_vplatgen. It has bones along the bottom, with platforms randomly placed and scaled scrolling from top to bottom. Some platforms wave from left to right slightly as well. To dodge, you are to stay on the platforms and not fall to the bottom into the bones. There are 3 variations to this attack, controlled by obj_vplatgen's (0-indexed) type variable, type 1 to type 2 are simply sped up versions of type 0. Type 2 is directly accessible as attack type (variable a_type) 9 in obj_sansb_body. There's also a unused 6th Alarm event to the generator objects, which spawns randomly positioned bones in the middle of the screen to dodge every 50 frames. Because the platforms are randomly generated in size and position, it can be impossible to avoid getting hit.

Vertical and Horizontal Bones - Fixed bullet patterns with bones coming from positions vertically and horizontally. To dodge, you must maneuver around the bones. Accessible as attack type 10 in obj_sansb_body. There also exists a variant, accessible as attack type 11 in obj_sansb_body, which is faster and has a different pattern. There is also a "hell" variation of the first kind of the attack, accessible by setting the hell variable in obj_sansb_body to true, which is harder.

Random Gaster Blasters Variant - The sprites for the blasters are squished to be thin, much like one of the final version's variants, although this time the blasters spawn and shoot faster. This can be seen if a obj_gasterbl_gen is spwaned with type 0, which is not utilized by any coded attack in obj_sansb_body.

Final Attacks Variants - There is also "hell" variants of some of the final attacks. The attack where you have to short hop in between a gap in bones (attack type 1) and the one where you hop over a small white bone with a long blue one right after (attack type 3) is faster when the hell variable in obj_sansb_body is set to true. The platforming attack with bones and platforms scrolling across the screen horizontally has a variant where the platforms scroll slower, which is type 0 of obj_3platgen.

Worth to note that there exists an unused pitch for Megalovania in the code, which is also demonstrated in the video in result of the usage of the skip debug variable. Here's the related code, in the Create event of obj_sansb:

if (skip == 1)
{
    con = -1;
    
    with (mypart1)
        bounce = 1;
    
    obj_borderparent.visible = true;
    global.msg[0] = scr_gettext("obj_sansb_90"); // * Skipped ahead.
    global.mnfight = 3;
    global.myfight = 0;
    global.faceemotion = 0;
    normalfight = 1;
    obj_heart.visible = true;
    global.flag[271] = 1;
    caster_loop(global.batmusic, 0.95, 0.95); // <-- here
}

(Source: Lil'Alien)

Mettaton EX#

Watch on YouTubeThe Mettaton EX battle has some unused attacks. These can be seen if obj_mettattackgen is spawned with the respective attack types set in a global variable called global.attacktype.

To do:
Explain better

Attack type 1 - Columns of boxes

Attack type 2 - Columns of boxes weaving from left to right

Attack type 3 - Some arms weaving from left to right?

Attack type 4 - Literally just legs

Attack type 5 - Activated legs weaving from left to right

Attack type 6 - Boxes and bombs scattered everywhere

Attack type 7 - Boxes and bombs scattered everywhere, but faster

Attack type 8 - Tightened bullet board, bombs appear from left and right

Attack type 9 - Less tightened bullet board, bombs appear from left, center and right

Attack type 10 - Columns of boxes and bombs approaching fast. The pattern is replayed after a while

Attack type 11 - Columns of blocks that go upwards when shot

Attack type 12 - Columns of blocks that go upwards when shot, plus sparkle bullets which only appear in the Alphys Lost Soul fight in the final game

Attack type 13 - A lot of mini Mettatons throwing hearts

Attack type 14 - Another lot of mini Mettatons throwing hearts

Attack type 15 - Mini Mettatons throwing sparkles

Attack type 16 - Mini Mettatons throwing sparkles again

Attack type 50 - Some arms with moving yellow block?

Attack type 51 - Fast disco ball

Attack type 52 - Boxes and bombs scattered everywhere, again; also kinda fast

Attack type 55 - Yet again, literally just legs

(Source: Lil'Alien)

Вещи#

ID

Название на русском

Сокращённое название

Серьёзное название

Описание

Текст при использовании

2

Крокет ролл

CroqtRoll

CroqtRoll

Лечит 15 ОЗ Жареное тесто по традиции подаётся с молотом.

Обычное состояние текста:

Вы впихнули крокет ролл в свой рот.

Серьёзный режим:

Вы съели крокет ролл.

5

Каменная конфета

RockCandy

RockCandy

Лечит 1 ОЗ Здесь рецепт для готовки дома:

1. Найти камень

Вы съели каменную конфету.

6

Тыквенные кольца

PunkRings

PmknRings

Лечит 8 ОЗ Маленькие тыквы зажарены как кольца лука.

Вы съели тыквенные кольца.

8

Твёрдый лук

StocOnion

Onion

Лечит 5 ОЗ Даже если есть сырым, слёзы не навернутся.

Обычное состояние текста: Вы съели твёрдый лук. Вы не заплакали...

Серьёзный режим:

Вы съели твёрдый лук.

9

Призрачный фрукт

GhostFrut

GhstFruit

Лечит 16 ОЗ Если съедят, он никогда не пройдёт на тот свет.

Вы съели призрачный фрукт.

18

Мороженое с тестом щенка

PDIceCram

Ice Cream

Лечит 28 ОЗ. Сделан молодым щенком.

Примечание: Название этого предмета слишком длинное, чтобы корректно отображаться при использовании пространственного ящика. Текст для использования не имеет варианта для серьёзного режима.

Ммм! На вкус как щенки.

(Источник: rawr.ws)

Unused Item Drop#

In the internal monster setup code, there are mentions of item rewards and the chance for an item to drop. This never happens within the game, leaving these global variables unused: itemrewardid and itemrewardchance. Below is an example of the variables in the code.

global.monstername[myself] = scr_gettext("monstername_3") // monstername_3 = "Froggit"
global.monstermaxhp[myself] = 20
global.monsterhp[myself] = 20
global.monsteratk[myself] = 4
global.monsterdef[myself] = 1
global.xpreward[myself] = 10
global.goldreward[myself] = 20
global.itemrewardid = 1
global.itemrewardchance = 50

Old Toriel Dusting Data#

scr_getvapordata contains a piece of ASCII pixel art of Toriel's death sprite, spr_torielboss_kneelsmile2, (mostly) composed of 0s (representing black) and 1s (representing white). Along with other data contained in the script, this was meant to be interpreted by an old version of the game's sprite duster, obj_vaporized, which produces dust particles according to it; the final game instead uses obj_vaporized_new like all monsters other than Undyne and Glad Dummy. (The following representation of the data cuts it to lines with 72 characters each, which is half of 144, the original sprite's width.)

000000000000000000000000000110000000000000110000000000000000000000000000
000000000000000000000000001100000000000000011000000000000000000000000000
000000000000000000000000001110111111111110111000000000000000000000000000
000000000000000000000000110001111111111111000110000000000000000000000000
000000000000000000000011111111111111111111111111100000000000000000000000
000000000000000000000111101111110111110111111011110000000000000000000000
000000000000000000000111101111111111111111111011110000000000000000000000
000000000000000000001111101101110111110111011011111000000000000000000000
000000000000000000001111100111000111110001110011111000000000000000000000
000000000000000000001111100111111111111111110011111000000000000000000000
000000000000000000001111110011111011101111100111111000000000000000000000
000000000000000000000111110001111111111111000111110000000000000000000000
000000000000001111000111111000110100010110001111110000000000000000000000
000000000000111110001011111000001111111000001111101000000000000000000000
000000000000111100001000000000000000000000000000001000100000000000000000
000000000001111100001000000110000011100011110000001000111000000000000000
000000000011111110000000000001110010010111100000001000111100000000000000
000000000011111111111111110111000111000000000000010100111110000000000000
000000000111111111111111111011111111100000000000100100011111000000000000
000000000111111111111111111100111111100100000001000100011111100000000000
000000000111111111111111111110011100001110000010000100011111110000000000
000000000011111000000000000111000000000000000100000100011111111000000000
000000000011110010000001111000000011100000001000011000011111111000000000
000000000000100100000000000110000000000000100011100110001111111100000000
000000000000000100000000000000100000000010001110010010001111111110000000
000000000000001000000000000000000011110000111101000001000111111110000000
000000000000001000000000000000110000000111111000000001000111111111000000
000000000000001000000000000001111000111111000000000001000111111111100000
000000000000010000000000000011000011000000000000000000100111111111100000
000000000000010000000000000100000000000000000000000000100111111111110000
000000000000010000000000000000000000000000000000000000100111111111110000
000000000000010000000000000000000000000000000000000000100111111111111000
000000000000010000000001111000000000000000000000000000100111111111111000
000000000000001000000000000000110000000000000000000000100111111111111000
000000000000000111111111111100000000000000000000000001001001111100011100
000000000000011111111111111111110100000000000000000010000111111111100110
000000000000011011101110000000000000111111111111000000011100011101101100
000000000000000000000000000000000000000000000000000000000000000000000000
2

(Source: Original TCRF research)

Game Deletion/Renaming Code#

Two events in the game attempt to rename or delete the game's executable undertale.exe, but fail because they target the save file directory (where file0 is) rather than the executable's folder. This can be proven by placing a duplicate undertale.exe in the save directory.

Firstly, the game's executable is attempted to be renamed to flowey.exe on the first Neutral Route playthrough after Flowey absorbs the six human souls when Asgore is defeated and crashes the game. The game renames itself back to undertale.exe once Flowey is defeated. It was likely to give an immersion that Flowey has conquered the game's world so much that he can even mess with your game's executable file.

In obj_asgore_lastcutscene:

if (global.osflavor == 1)
{
    if (file_exists("undertale.exe"))
        file_rename("undertale.exe", "flowey.exe");
}

In obj_flowey_master:

if (global.osflavor == 1)
{
    if (file_exists("flowey.exe"))
        file_rename("flowey.exe", "undertale.exe");
}

The game attempts to delete itself when the screen shakes at the end of a Genocide Route after Chara destroys the game's world. In addition to the game's INI and save files, the game tries to find various common name cases for the Undertale executable and tries to delete it.

In obj_gameshake:

if (global.osflavor == 1)
{
    if (file_exists("undertale.exe"))
        file_delete("undertale.exe");
    if (file_exists("undertale.EXE"))
        file_delete("undertale.EXE");
    if (file_exists("Undertale.exe"))
        file_delete("Undertale.exe");
    if (file_exists("UNDERTALE.exe"))
        file_delete("UNDERTALE.exe");
}

(Source: WarlockD)

(Source: Original TCRF research)

(Source: KrisCross)

Obscured and Out of Bounds Tiles#

Snowdin Building Mockups#

Placeholder Snowed Inn Lobby#

Hidden under the image for the Snowed Inn lobby is a mockup of the rooms layout made of the Snowdin tiles.

Placeholder Snowed Inn Rooms#

Like the lobby, there is a placeholder layout for the rooms in Snowed Inn, featuring some not so comfortable beds...

Placeholder Librarby Inside#

A mockup of the inside of Snowdin's Librarby, being made of snow and bits of trees.

Early Lab Entrance#

Undertale-room_fire_prelab-EarlyLab.png Undertale-room_fire3-EarlyLab.png

In the rooms outside Alphys's lab, hidden under the sprite of the lab is an early version of it using very basic placeholder tiles.

Early MTT Hotel Outside#

Hidden under the MTT Hotel outside image in the respective room (room_fire_hotelfront_2) is an early version of the hotels outside, being made up of tiles instead of being one image. The ground tiles are placeholders, using the ice cave ground, a tile that was used as a placeholder throughout the entirety of Hotland.

Ранняя версия входа в ЯДРО#

Hidden in the right side of the room for CORE's entrance (room_fire_precore) is what seems to be a placeholder version of the entrance. Although cut off and using Hotland's tiles, the placeholder version seems to resemble the version seen in some concept art.

(Source: Underminers Discord)

Unused room_water11 Path#

Hidden out of bounds in room_water11 is an unused alternate path to room_water12. The doors in this area take you to the inaccessible island with an echo flower that can be seen in that room.

Странности#

Цена продажи Надоедливой Собаки#

Надоедливую Собаку можно продать за 999G и обменять за 1251G (самая высокая цена продажи во всей игре!), собака пропадет если ее вынести за пределы комнаты в которой она появляется, так что эту цену в нормальном прохождении не увидеть.

Дом Меттатона#

Кровать Меттатона, стены и телевизор имеют коллизию, но в ту секцию комнаты попасть невозможно.

Death By Glamour Speed#

Mettaton EX's battle theme, Death By Glamour, is played at 0.95x speed after the pre-battle intro cutscene, but plays at 0.97x speed instead if Mettaton's dialogue is skipped; this is the value set in scr_battlegroup, the script that defines all of the encounters in the game. The version in the OST plays at full 1x speed, matching neither of these.

Inu Slots Coin Donation Saving#

When you save in the Xbox One version, the game stores the value of flag 299 (the amount of coins you donated to the casino Dog Shrine) to global.xbox_coins_donated, then writes the latter into the save file. This appears to be completely unnecessary, as the game accesses flag 299 all the time, leaving the global variable unused.

(Source: Original TCRF research)

Toy Knife Room Name#

The room in the Ruins where the Toy Knife can be found is internally called room_ruins18OLD. This is the only instance of a room labelled as old being used, and there's no non-old version of the room.

Donkey Kong is my Favorite Marvel Superhero#

In the room of Hotland where you need to press 3 switches but Alphys calls you right before hitting the third switch, the variable that controls the dialog box moving with the player is named donkeykongismyfavoritemarvelsuperhero. This variable was referenced in the first 10th Anniversary livestream by the line "My Favorite M**vel Superhero's D**key Kong!" in a remixed version of the Wrong Number Song.

Internal Sound File Names#

To do:
Make the explanation simpler.

There are alternate file names for some sounds and music in the game's code, in the format music/*.ogg, from the phase of development where the game used GameMaker 8 and played external sounds and music through an extension. When the game was migrated to use GameMaker: Studio, it was changed to use GameMaker's native sound system for that instead. So to not change already existing code using the sound extension, compatibility scripts were made, one being caster_load, which converts the filenames that were originally used to pointers to GameMaker sounds by calling scr_getmusindex.

(Source: Original TCRF research)

Music/Sound Metadata#

As with the demo, music/sound files have some metadata. The ENCODER field seems to be always overwritten by GameMaker: Studio, but there's still some information from FL Studio's LAME encoder.

(all OGG files, v1.08)

Name

encoder

(all OGG files, v1.11)

Name

encoder

(all WAV files, v1.08)

Name

ISFT

abc_123_a.ogg (v1.001+)

Name

encoded_by

TBPM

date

snd_ballchime.ogg

Name

encoded_by

TBPM

date

mus_computer.ogg

Name

SOFTWARE

mus_wrongworld.ogg ("Wrong Enemy ?!")

Name

encoded_by

TBPM

date

mus_mysteriousroom2.ogg ("Premonition")

Name

ENCODED BY

BPM (BEATS PER MINUTE)

DATE

mus_express_myself.ogg ("Last Goodbye")

Name

encoded_by

TBPM

date

snd_hit, snd_victor

Name

IART

ICRD

INAM

snd_spearappear

Name

ICRD

snd_wrongvictory

Name

ICRD

The "Snoopy, Come Home" metadata refers to the fact that both snd_hit and snd_victor are sampled from the song "Snoopy, Come Home", which is the title song for the 1972 movie with the same name. Toby seemingly took the song from an online rip of the original vinyl, without changing the metadata.

(Source: Original TCRF research)

Ошибки разработчика#

Боевое Эссе Меттатона EX#

У Меттатона EX присутствует вопрос в его "эссе", в котором игроку предлагается написать любой текст и сохранить, чтобы Меттатон как-то отреагировал. К сожалению, нажатие клавиш "x" или "z" заранее заканчивает печать эссе, если не нажата CTRL, из-за чего некоторые слова напечатать нельзя (в большинстве прохождений). Это было исправлено в версиях для PlayStation 4, PlayStation Vita и Nintendo Switch, так как они используют экранную клавиатуру.

ПК

Консоль

* (В трещине на стене находится лягушка размером с муравья...)
* (Она машет вам.)
* (На стене небольшая трещина.)
* (Там находится лягушка...)
* (Стоп! Их там две!)
* (Вы пережили чудесное, незабываемое ощущение...)
* (... которое мог пережить только тот кто увидел двух лягушек.)