the cutting room mirror

zh-cn

注意:英文版页面较此页内容更全面。

你在干什么? 在寻找秘密吗?

不要趟你不该趟的浑水。

或者你会学到你不想学到的教训...

Hee hee hee. — Undertale 官网HTML 源码

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

UNDERTALE 是一款不需要杀死任何人即可通关的独立角色扮演游戏 (RPG)。受 EarthBound、Yume Nikki、Cave Story 等启发,它因有趣的角色设计、相互联系的音乐和经典又曲折的 RPG 梗而备受赞扬。Undertale有着许多玩家,在很长一段时间内,这是款“不得不玩”的游戏。

Prototype Info Prerelease Info 调试模式 (Debug mode)可惜,这个模式下没有“Bug”可以抓。 未使用图像这个游戏里居然还有未使用的狗! 未使用区域从装着糖果的基座,到健谈的 NPC。 未使用文本我从来没有 BEPIS 过。

隐藏的开发者信息#

"禁止泄露图片"警告#

1.00版本#

...and don't even get us STARTED on uploading audio tracks to BrawlCustomMusic!

原文

翻译

Please don't upload these huge sprite sheets online. 
Just 'cause most weird things here ARE used, I'd rather them be seen in context first. 
wait like a year 1st...
if you're just ripping normally seen sprites for spriter's resource or smth idc if you use these 2 make it easier tho
请不要把这个大贴图表上传到网上。
因为这里面大多数奇怪的东西已经在正式游戏中了,我想让它们在游戏中被玩家发现(而不是网上)。
等上大概一年吧...
但如果是为了Spriter's Resource抓取一些常见的贴图或者别的什么的话没关系,有贴图表会简单些。

abc_1111 包含了一段写给拆包者的话, 特别是给那些来自Spriter's Resource(一个像素图片资源网)的人,让他们在一年之后再把完整的贴图上传到网上。

使用Game Maker制作的游戏会将所有的角色和贴图储存在一张巨大的PNG格式贴图表上面,而不是将每一个贴图或角色作为单独的文件储存。 所以如果有人想要上传某张贴图的话,最简单的方法就是上传这张大图...这会将所有含有剧透的内容也留在同一张图上。

给警告信息起abc_1111这个名称是为了让它出现在以字母顺序排列的文件列表最顶端,并且让它看上去更显眼。 但是这么做并没有起到效果,因为文件列表只有在使用外部程序将内部贴图名称分隔成字符串时才能看见。因此这张图片在随后的版本中被替换了。

1.001版本#

I don't like the b-bepis either!! I-I swear!
 
you know what i
    HATE?

that's
       bepis

THE TASTE
   the smell
      the texture

hey...
      your
          drooling...
翻译
 
你知道我
    '''讨厌什么吗?'''

那个
       bepis

'''那味道'''
   那气味
      那纹理

喂...
      你在
          流口水...

在1.001版,Toby将之前不要上传的请求替换成了这个关于“bepis”的非常奇怪的短笺,“bepis”引用自EarthBound中来自Moonside的一个讨厌玩家喜欢的食物的角色。Toby Fox 很喜爱"EarthBound",而Undertale从那部游戏中获得了很多的灵感。 “Bepis”是“Pepsi”的错误拼写,同时也是开发者觉得很怪的一个词。

这些东西没有意义,并且这被认为Toby从现在开始允许大家分享贴图表,因为它替换了先前的请求,并且可以在这封贴文中看出来。

“不要剧透游戏!”警告#

abc_123_a.ogg 你好。请-请-请-请-保持一些尊重并不要剧透游戏。因为像你这样爱管闲事的人,在当今不可能保有秘密。请让这一切都成为我们两人之间的秘密。如果你把它发到网上,我将不会制作任何秘密。没人会为此留下印象。这将会是你的错!嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻。

这是一则由八个不同的语音转文字语音组成的音频文件,告诉人们不要把游戏中的秘密发布到网络上。脑子正常的谁会那样做——等一下...

选择这个奇怪的文件名称的目的是为了让它出现在以字母顺序排列的文件列表的最上面,并且让它看上去更显眼。游戏文件夹中其他所有OGG格式的音乐和音效都以“mus_”或“snd_”作为前缀。

该文件在 v1.001 更新中被更新,更新后的版本移除了几乎所有原始音频文件中的内容。

Toby Fox的消息#

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.
By the way, most of the seemingly unused text/files are used.
If you can find the in-game context for an asset, you can show it off. But if you can't, it probably means you haven't looked hard enough. Anything truly unused I'll probably post myself, later.
Living in a world like this, where people can simply cheat out the answers from the code... your impatience has REALLY damaged you, hasn't it?

翻译#

这个游戏的魅力的一部分就是其中的选项和秘密。如果你正在读这个,请不要把这则消息或着信息发布到任何地方。否则制作秘密将变得毫无意义。
顺带一提,大多数看上去没有使用的文本/文件实际上都被用过了。
如果你研究出了一个资源在游戏中的用途的话,你可以将把它展示出来。但是如果你不能的话,可能意味着你找的不够努力。真正没有使用的东西我可能会在以后自己发布。
在人们可以轻易地从代码中作弊得到答案的世界生活...你的不耐烦给你带来了很大的伤害,不是吗?

这则通告被放置在 attention_hackerz_no_2 脚本中,其将这四个字符串分别设入 demonx, demony, demonz 和 demond 变量。 很显然,这个脚本是用来警告破解者们的。因脚本的名称,这些消息被放入了内部字符串列表的开头,这进一步增加了该通告被阅读的机会。

然而,在1.001版本,它被替换为:

Greetings.
You have made yourself completely clear.
Understood.
I, your humble servant, will follow you to the utmost...

翻译#

你好。
你已经表达的很清楚了。
了解了。
我,您卑微的仆人,将追随您至死不渝...

这些变量也被重命名为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.

未使用的战斗#

RG03和RG04#

Watch on YouTube

ACTions#

   * Check         * Whisper
   * Touch Glove
   * Error

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#

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:

   HP: 666666 
   AT: 66666         DF: 66666
  EXP: -6666       GOLD: -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.

Other Unused Encounters#

ID

Enemy 0

Enemy 1

Enemy 2

Encounter message (EN)

Encounter message (JP)

Notes

1

TestFroggit

TestFroggit

TestFroggit

* TestMonster and its cohorts
draw near!

(N/A)

Appears in TESTROOM.

14

Vegetoid

Loox

* Vegetoid and Loox attacked!
* ベジトイドと ルークスが
  おそってきた!

31

Chilldrake

Chilldrake

* Chilldrakes flutter forth!
* いきがりバードが
  パタパタとんできた!

33

Icecap

Snowdrake

* Icecap and Snowdrake
  pose like bad guys.
* ヒョー坊と オワライチョウは
  ワルっぽいポーズをとった。

33

Icecap

Chilldrake

* Icecap and Chilldrake
  pose like bad guys.
* ヒョー坊と いきがりバードは
  ワルっぽいポーズをとった。

Alternate version of the previous encounter for if Snowdrake has been killed.

34

Jerry

* Jerry clings to you!
* ジェリーに つきまとわれている!

46 (Old)

Aaron

Woshua

* You shouldn't read this.
* これは よまないで。

The battle encounter that involves Aaron and Woshua being freaked out by Napstablook's music is not supposed to show its flavor text.

61

Final Froggit

* Final Froggit was already there,
  waiting for you.
* ファイナル・フロギーが
  まちかまえていた。

The encounter message is incorrectly formatted if spawned in-game, with the comma appearing on its own line.

63

Whimsalot

* Whimsalot rushed in!
* ナキムシャが かけつけた!

69

Bomb

* Defuse the bomb!
* ばくだんを かいじょしろ!

This Bomb is a unique unused enemy that lacks a time limit but otherwise behaves like the used dog-Bomb.

79

Vulkin

Vulkin

* A strange parade blocks the
  path.
* きみょうな しゅうだんに
  ゆくてを ふさがれた。

127

Whimsalot

Parsnik

* Whimsalot and Parsnik appeared.
* ナキムシャと パースニックが
  あらわれた。

131

Parsnik

Astigmatism

* Not only potatoes have eyes.
* “め”に どくが あるのは
  ジャガイモだけじゃない。

133

Astigmatism

Migospel

Moldessa

* Looks like a real party.
* これぞ まさに “パーティ”だ。"

134

Whimsalot

Parsnik

Moldessa

* Party from Hell.
* じごくの “パーティ”だ。"

141

Mad Mew Mew

* Mad Mew Mew blocks the way!
* ぷんすかみゅうみゅうに
  ゆくてを ふさがれた!

256

Asriel

* ASRIEL's SOUL was awakened
  by the power of your
  friends!
* なかまの ちからで
  アズリエルのタマシイが
  めをさました!

256

Asriel

* It's time to say goodbye.
* これで おわかれだ。

Unused Attacks#

Sans#

To do:
Double check these.

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

治疗15HP 用木槌做的传统油炸面团。

你把槌球棍打进自己的嘴巴。

5

石糖

RockCandy

RockCandy

治疗1HP 这是在家制作这个东西的配方:

You hit the Croquet Roll into your mouth.

Serious Mode:

You ate the Croquet Roll.

5

Rock Candy

RockCandy

RockCandy

Heals 1 HP
Here is a recipe to make this at home:

1.找到一块石头

你吃了石糖。

6

南瓜圈

PunkRings

PmknRings

回复8HP 一个小小的南瓜,煮的像洋葱圈一样。

你吃了南瓜圈。

8

无泪洋葱

StocOnion

Onion

回复5HP 就算生吃它,也不会流泪。

你吃了无泪洋葱。你没有流泪……

9

鬼果

GhostFrut

GhstFruit

回复16HP 一旦吃了,将永世不得超生。

你吃了鬼果。

18

狗头冰激凌

PDIceCram

Ice Cream

"狗头冰淇淋" 回复28HP。 由年轻的小狗制成

Normal: You ate the Stoic Onion.
You didn't cry...

Serious Mode:

You ate the Stoic Onion.

9

Ghost Fruit

GhostFrut

GhstFruit

Heals 16 HP
If eaten, it will never pass to the other side.

You ate the Ghost Fruit.

18

Puppydough Icecream

PDIceCram

Ice Cream

"Puppydough Icecream" Heals 28 HP.
Made by young pups.

'注意:这个物品的名称过长导致无法在使用次元盒时正常显示''

嗯嗯!尝起来像小狗。

(Source: 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.

Early CORE Entrance#

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(游戏中最高的物品售价!),但将烦人狗带出生成它的房间后就会消失,所以永远不可能在正常游玩中看到这点。

Mettaton的家#

Mettaton的床,上方的墙和电视都有碰撞实体,但是在游戏中不可能到达房间的那个部分。

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)

开发者的疏忽#

Mettaton EX战斗论文#

在与Mettaton EX的战斗中,有一个“论文”问题环节,你可以输入文字并让他评价。不幸的是,除非按住Ctrl键,输入“x”或者“z”将会结束论文,这导致一些单词(在大部分游玩中)无法打出来。PS4、PS Vita及Nintendo Switch版本的游戏中没有这个疏忽,因为它们使用屏幕键盘。

PC

Console

* (There's an ant-sized frog in a crack in the wall...)
* (It waves at you.)
* (There's a small crack in the wall here.)
* (There's a frog inside...)
* (Wait! There are two!)
* (You had a wonderful, exclusive experience...)
* (... that only someone who saw two frogs could feel.)

电脑版

主机版

* (墙上的裂缝里有一只蚂蚁大小的青蛙...)
* (它在向你招手。)
* (墙上有一个小裂缝。)
* (里面有一只青蛙...)
* (等等!是两只!)
* (你获得了一次完美、独特的体验...)
* (...只有见到两只青蛙的人才能体会到)