New! It's the "parallel story" to Undertale, by Toby Fox - Deltarune, by Boxy Oft!
The game finally got a non-demo release in 2025, after a quite long almost seven-year wait - or up to fourteen depending on where you start counting from, as Boxy Toby had the dream that inspired Deltarune all the way back in 2011. Even after all this time, it currently only features Chapters 1-5. Future chapters are planned to be released as free updates, with Chapter 6 planned for 2027, and Chapter 7 planned for an unknown future time.
With such a long development cycle, it's no surprise that a lot of unused content gets left over, ranging from entire cut areas in some chapters, to unused enemy attacks, game mechanics, debug content, and more - and if you dig deep enough, you can even find some very, very interesting things which might not have just been left there by accident.
The game makes use of a peculiar GameMaker feature that was added specifically for Deltarune4, which allows individual chapters to effectively be stored as entirely separate games and swapped between on-the-fly. Each chapter comes with its own data.win file and quite a bit of duplicated content, with only music files being shared between them. Thus, this page has been split up on a per-chapter basis, with the main page only being used for things which are present across multiple chapters in a significant or changed way.
Sub-Pages#
Unused Content by Chapter#
Non-Chapter Specific#
Preceding Chapter Leftovers#
Many sprites and sounds from a previous chapter will be left over in the next one, regardless of if they're used in that chapter or not, likely as a result of the chapters being built off one another. In particular, lots of Chapter 1 content is left over in every following chapter, whereas later chapters' content is less likely to get left over, especially sprites for chapter-exclusive characters like Ramb and very cutscene-specific sprites.
Unused Graphics#
obj_npc_facing#
This sprite, spr_placeholder, is the default sprite of the object obj_npc_facing, which is used for most NPCs capable of facing different directions (hence the name). The sprite is likely present simply to make these objects identifiable in the editor – it is changed to an NPC's sprite (Toriel's by default) upon creation.
(Source: Original TCRF research)
Placeholder Kris Sprite#
An unused placeholder sprite for Kris, named spr_krisplace. It's used as the "default" sprite for the party member objects in battle, while programming from the parent object tells the game which object should use which party member's sprites.
(Source: Original TCRF research)
Doors#
Designs for the marker objects used to set Kris's position upon entering a room through a door introduced since the release of Chapter 2, using a cleaner letter design and including a silhouette of Kris, as well as adding letters R-V, with the S marker using the Cool S. There were also "any" markers added, which go through the entire alphabet and have numbers for each letter.
(Source: Original TCRF research)
Like with the markers, the door objects also got "any" versions, though there aren't quite as many of them in comparison.
(Source: Original TCRF research)
Chapter 1 Demo Noelle Portraits#
spr_face_nX |
||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
spr_face_n_matome |
Noelle's original dialogue portraits from the Chapter 1 Demo still exist in each Chapter's files as spr_face_n0-spr_face_n9, being replaced with spr_face_n_matome in Chapter 2 and retroactively replaced in Chapter 1. She had a much rounder jaw, longer hair that was cut off by the bottom of the frame, and her eyes were closer to her hair and further from her nose. A couple of them are animated, a feature that was lost in her new portraits (and most portraits that aren't returning from Undertale in general) due to the game adopting a new system of storing each character's portraits as one sprite rather than multiple. Oddly, it's only in Chapter 1 itself that these sprites are completely overwritten in the code; Chapters 2-5 still define these sprites for each of her expressions, before then overwriting them with the new ones if the global.chapter variable is above 1.
(Source: Original TCRF research)
Extra Chapter Numbers#
From Chapter 2 onwards, a chapter number sprite is displayed beneath the game's logo with its frame corresponding to the current chapter (dictated by the global.chapter variable). This includes the expected Chapter 2-7 graphics, along with an unused version for Chapter 1, which doesn't include/display this sprite. Furthermore, it also includes graphics for Chapters 0, 8, 9 and 10, none of which appear in the chapter select screen or otherwise have had any indication of their planned existence.
The Chapter 0 and 1 graphics were likely added for convenience so that each frame of the sprite would correspond to a Chapter number properly, but it's unclear why the Chapter 8-10 ones exist. As Toby Fox has explicitly stated in interviews that there will be seven chapters, these were most likely either left here as a red herring, or the developers themselves were simply uncertain of how many chapters there would be at the time the sprite was made.
(Source: Original TCRF research)
Unused Objects#
obj_CHAPTER_SELECT_old#
|
Old |
Current |
|---|---|
|
|
|
An old version of the chapter select, leftover from v2 of the LTS Demo, could be found in the files before v22. This version is from before the chapter select was reprogrammed in v3 of the demo, so it's very different internally. The changes are as follows:
- The game window's title is still set to "DELTARUNE Chapter 1&2".
- Only Chapters 1 and 2 can be selected.
- After selecting a chapter, 12 frames need to pass before the player is allowed to proceed with or back out of starting it.
- The lines separating the chapters fade in from the bottom rather than the top.
- It's missing the option to switch to Japanese.
- The text and icons are all further from the sides of the window.
- The chapter icons are displayed incorrectly due to changes in how they're stored.
- The copyright information was moved from the bottom right to the bottom left to make space for the Shadow Crystal UI.
- The version is "DELTARUNE v2" and the copyright years are still listed as 2018-2024.
- The stars that appear to indicate which save files were completed in a chapter don't exist.
- The text for continuing and starting a new chapter before all available chapters are completed is formatted differently.
Attempting to start a chapter will crash due to the chapter starting sounds being renamed, but fixing this by making it call the proper audio files will make it function properly again.
Unused Text#
Failsafe Text#
Throughout Deltarune, as with Undertale, there are many places in the dialogue where particular text is shown depending on the value of some variable. In many of those places, failsafe text is defined, which will be displayed if there was no other text defined for the particular value of the checked variable.
Objects and Scripts#
There are several generic objects and scripts used to display text for multiple different NPCs (and other interactables) throughout the game. They often have a general failsafe message for if the particular variable value (e.g. room ID, item ID, etc.) isn't defined.
Monster Encounters
The default message for the text that appears at the start of battles in scr_enountersetup, which can be seen in-game by starting a battle with an encounter that's not uniquely defined. In Chapter 4, it can also be seen in an encounter with a Wicabel and Organikk due to an oversight where they don't have a battle message defined.
English |
Japanese |
|---|---|
|
|
Door
Shortcut door choice (though this is unused even if the choice is undefined):
English |
Japanese |
|---|---|
|
|
Rhyming NPC Dialogue
obj_npc_facing, obj_npc_room, and obj_npc_room_animated, respectively:
English |
Japanese |
|---|---|
|
|
|
|
|
|
These three rhyming lines appear to be connected. It is worth noting that they describe Undertale 's "mystery man" (the character assumed by many to be Gaster) suspiciously well.
(Source: Original TCRF research)
Symbols
obj_npc_sign (primarily used for signs):
English |
Japanese |
|---|---|
|
|
This line is a reference to similar lines in Sans's workshop in Undertale (these lines are not in Deltarune; they're just included here for illustrative purposes):
|
|
|
(Source: Original TCRF research)
Seizure
obj_readable_room1:
English |
Japanese |
|---|---|
|
|
(Source: Original TCRF research)
Base Interactable Objects
obj_interactablesolid and obj_readable, respectively (which serves as the bases for actual interactable objects):
English |
Japanese |
|---|---|
|
|
(Source: Original TCRF research)
Generic Error Messages
In Chapter 2 onwards, if debug mode is enabled, these messages all become basic error messages explaining what the problem is.
Object |
Text |
|---|---|
|
|
|
|
|
|
|
|
|
|
Game Initializers#
scr_gamestart
Among other things, this script defines default choice options:
English |
Japanese |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(Source: Original TCRF research)
obj_initializer
This object's Create script defines default messages (which were seemingly at one point used for testing).
Small messages:
RALSEI:
|
SUSIE:
|
Normal messages:
RALSEI:
|
SUSIE:
|
(followed by Susie's above small message)
|
TORIEL:
|
(Source: Original TCRF research)
SAVE Files#
If a save file exists but dr.ini doesn't exist, then one of the following three strings will be displayed in place of the file's name:
FILE0
FILE1
FILE2
(Source: Original TCRF research)
Save Name
English |
Japanese |
|---|---|
|
|
Code that doesn't work anywhere, from obj_savemenu's Create script.
(Source: Original TCRF research)
Name Hack#
English |
Japanese |
|---|---|
|
|
Since the Light World menu is reused from Undertale, the stat menu will still respond to a name longer than 6 letters, though now with confusion. The reason is likely that the name is harder to change this time around as it's always set to "Kris", making it impossible to change through save editing. This text can be seen by changing the value of global.lcharname in scr_gamestart from "Kris" to a name longer than 6 letters, and will overwrite the "Since Chapter" message that shows the chapter the player started that file from.
Unused Enemies#
#1: Enemy#
Enemy (obj_baseenemy) is an unused placeholder enemy evidently used for testing. It is defined as a failsafe in a few different places, and so has a few other names. It uses Rudinn's sprites, though it has different text, ACT options, and stats.
TESTOBJECT is defined by obj_initializer, and Enemy is properly defined in scr_monstersetup. Oddly, the name defined for it in scr_gamestart is often changed between chapters; it was first called G BODY in Chapter 1, then Chapter 2 changed it to ECHIDNA, Chapter 4 changed it to TERUTERUBOUZU, and Chapter 5 changed it to WEATHER DOLL. Chapter 4's name is very similar to teru teru bōzu, dolls that are hung outside doors and windows in Japan in hopes of bringing sunny weather, which Chapter 5's name seems to describe as well.
TESTOBJECT |
G BODY/ECHIDNA/TERUTERUBOUZU/WEATHER DOLL |
|||
|---|---|---|---|---|
Attack |
3 |
Attack |
3 |
Attack |
Defense |
2 |
Defense |
2 |
Defense |
HP |
20 |
HP |
20 |
HP |
Spare point |
0 |
Spare point |
||
EXP |
||||
D$ |
||||
Battle Messages#
Normal battle messages:
|
|
|
|
Enemy Messages#
Messages that would be spoken by the enemy, randomly chosen between:
|
|
|
|
...were it not for this line, which replaces the above lines every time:
|
Message shown after using 'Victory (S)' (see below) at the end of the enemy's turn:
|
|
ACT#
ACT options (effects detailed below):
English |
Japanese |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
'Check' text (note the incorrect stats):
English |
Japanese |
|---|---|
|
|
'Warning' text:
|
|
'Victory' text (makes the enemy spareable immediately):
|
'Victory (D)' text (makes the enemy spareable after the enemy's next turn):
|
'Victory (S)' text (makes the enemy say a message and run away, following its next turn):
|
'Lecture' text:
|
|
(Source: Original TCRF research)
Unused Settings#
There are several flags stored in each chapter's save file for settings that normally can't be changed in-game.
Disable Screen Shake#
Flag 12 (found on line 329 in Chapter 1 and line 565 in Chapters 2+) allows you to toggle the screen shake effects. When set to 1, all screen shakes will be disabled. A variable called shakeoff is still present in the config menu's draw code, being set to either "OFF" or "ON" depending on if flag 12 is set to 0 or 1.
Alternate Attack Mode#
|
|
To do: |
When flag 13 (found on line 330 in Chapter 1 and line 566 in Chapters 2+) is set to 1, it enables an unused method of attacking where each party member uses a different key to attack. The first member uses the Confirm button (Z by default), the second member uses the Cancel button (X by default), and the third member uses the Menu button (C by default). Note that in Chapters 1 & 2, this mode will properly light up Ralsei's attack box, unlike the normal mode, though it won't return to green due to the same bug that prevents the normal mode from lighting the box up in the first place. This mode's code wasn't updated upon Noelle being added in Chapter 2, so her attack box won't light up at all while using it.
Battle Cursor Memory#
When flag 14 (found on line 331 in Chapter 1 and line 567 in Chapters 2+) is set to 1, each member's selections from their previous turn will be kept instead of reset. This extends from the main action menu to all the sub-menus.
SFX and Music Volume#
Flags 15 and 16 (found on lines 332 & 333 in Chapter 1 and lines 568 & 569 in Chapters 2+) control the volume of sound effects and music respectively, which are options that cannot be changed normally, as only Master Volume can be changed. Code still exists in the step event of obj_darkcontroller (the object for the Dark World's pause menu) to change these values, sound effect volume being changed when global.submenu is set to 31 and music volume being changed when global.submenu is set to 32. Their values are both changed by 0.5 (5%) at a time instead of 0.2 (2%) like Master Volume is. Interestingly, a variable called musvol containing the music volume's current percent is still set for the config menu's draw code, but it's never used.
Unused Mechanics#
Talk Button#
Hidden in the Dark World menu's code is a fifth button for TALKing. It's supposed to be placed in the middle of the four buttons, but is programmed to be skipped when drawing the menu buttons and moving the cursor left or right to select an option, along with an extra check to cancel selecting it and reset the menu cursor position if the option was somehow selected. The button would have been used for talking to your party members about the room you're currently in (à la calling Papyrus in Undertale), but was likely scrapped due to the sheer amount of dialogue that would need to be written to account for both story progress and current party members in every room in the game. The script that would've held all the dialogue, scr_talkroom, still exists and is ran when using this button, but any dialogue that may have been written was stripped out, leaving it to use a single placeholder line instead.
Interestingly, using this button in Chapter 1's first timed puzzle room will prevent the text for failing too many times from appearing, and using it in the second one will change the text for failing too many times.
Multiple Attack Bolts#
Another feature that would've returned from Undertale was a character having multiple attack bolts depending on their weapon. Each weapon has a weaponbolts variable for how many bolts the weapon should give, but they're all set to 1, and each character's charbolt variable in the code for creating the attack UI is hardcoded to 1 anyway regardless of their weapon's bolt amount. Changing the hardcoded values or making the game set each character's charbolt variable to their current weapon's weaponbolts variable will show that this feature is fully functional. The damage done to an enemy will be multiplied by the amount of bolts however, which is unclear if it's a bug or not.
Overworld Spell Use#
The game supports using certain spells in the overworld from the status menu when the party has enough TP, calling the script scr_spell_overworld to do so. Battles usually set TP to 0 upon ending to prevent this from happening, though it's unintentionally possible in Chapter 1 on rare occasions where TP isn't reset, such as after the battle between Susie and Lancer. The only spell that's usable in the overworld is Heal Prayer, healing 100 HP being just as if an item were used. Starting with Chapter 2, this was completely removed by making Heal Prayer no longer usable in the overworld.
Ambushing#
Starting with Chapter 2, the game contains a partially unused mechanic for enemies ambushing the player when starting battles. obj_chaseenemy, the object commonly used for overworld enemies, contains unused code for shooting basic diamond bullet objects called obj_encounter_bullet at the player when its test_release_bullet variable is set to 1. If one of these bullets hits the player, the global.ambush variable will be set to 1 and the party will shake while (with the exception of Noelle) using a hurt or shocked sprite, after which obj_testoverworldenemy, the object often used when touching an enemy to start battles, will run code to play the sound snd_battleenter while immediately starting the battle, instead of playing two instances of snd_tensionhorn first. When the battle starts, the enemy will have its turn first.
The reason this mechanic is only "partially" unused is that the functionality for starting battles on the enemies' turn with the global.ambush variable is still occasionally used for some fights, such as Clover and Tasque Manager's in the Dojo.
There is also unused code for the player ambushing enemies instead. When hitting enemies while in sword mode (more on that below), an explosion animation will play over the enemy, global.ambush will be set to 2, and obj_testoverworldenemy will have its washit variable set to 1, which makes the object play snd_break2 while immediately starting a battle with TP set to 25%. The enemies will also have their firststrike variable set to 1, but this variable is never checked by the game. Interestingly, an encounter with two Virovirokuns in Chapter 2 has alternate battle start text for if the enemy was ambushed.
Sword Mode#
Starting with Chapter 2 obj_mainchara, the object for Kris in the overworld, contains code for an unused mechanic where they'd use a sword to attack in the overworld when their swordmode variable is set to 1. In this mode, Kris can only face left or right even if they're moving up or down, and pressing the CONFIRM button will freeze them in place for a moment and make them "slash" by spawning obj_swordhitbox and playing a slashing sound. By default obj_swordhitbox won't function properly due to not having a sprite assigned to it, but assigning it one (like Kris' slashing sprite, for example) will display the object at 20% visibility and allow it to hit objects that are children of obj_swordobjparent, such as enemies and test objects present in room_cutscene_tester. An unused object called obj_swordarea will put Kris in this mode while they're touching it as long as an object that's a child of obj_swordobjparent is also touching it, implying the mechanic would be restricted to specific sections of rooms. The graphics for this mechanic appear to have not been implemented, as Kris will use their right facing sprite the entire time, flipped to match the direction they're facing.
The concept of Kris using their sword in the overworld would later be somewhat brought back with Chapter 5's platformer mode, and the swordmode variable would be reused in the same chapter while using the watering cans, as changing the variable to a non-zero value (in this case 99) disables obj_mainchara's sprite-drawing code, which the watering can object handles instead.
Debug Mode#
|
|
To do: |
Debug mode has largely been stripped, but some mechanics of it still work (and some testing maps need it enabled to work correctly), with the extent to which this is the case varying by chapter. Chapters 1 and 2 have nearly all debug functionality stripped despite it originally being present in the demos. Later chapters, especially 3 and 4, have more functionality intact, but they crash at various points without further modifications.
The easiest way to enable the remaining debug mode features in each chapter is to use UndertaleModTool's built-in UT/DR Debug script on the chapter's data.win file, which will also fix the crashes in Chapters 3 and 4. See the notes page if you want to know what this script is actually doing.
The following debug features are shared across some chapters:
- Holding G records and saves a gif to Deltarune's AppData folder
- Pressing S allows you to save your game anywhere
- Pressing L will instantly load your current save
- Pressing Z shows the hitbox for interacting with objects
- Pressing ~ speeds up the game to 150 FPS until it's pressed again
- Pressing Ctrl + ~ slows down the game to 10 FPS until it's pressed again
- Pressing ⇧ Shift + Ctrl + N (LB/LT + RB/RT + Y on controller) activates no-clip in Chapters 3 and 4
- Pressing ⇧ Shift + Ctrl + 0 (LB/LT + RB/RT + Select on controller) sets global.interact to 0 in Chapters 3 and 4
- Various keys allow you to easily traverse between rooms:
- Pressing the Insert key brings you to the next room ID
- Pressing the Delete key brings you to the previous room ID
- Pressing Home + 1 brings you to the Cyber World intro room (Chapter 2 only)
- Pressing Home + 2 brings you to Kris's bedroom
- Pressing Home + 3 brings you to your Castle Town
- Pressing Home + 7 brings you to the Legend cutscene
- Pressing Home + 8 or Home + 9 brings you to
room_battletest
Debug Menu Remnants#
There are remnants of a debug menu in each chapter's files, mainly in scripts prefixed with "scr_84_", implying the menu was originally created by 8-4, Ltd. during the Japanese localization of Chapter 1's development. Although it cannot be used anymore due to a vital script being dummied out, its companion scripts are still intact.
Script |
Function |
|---|---|
scr_84_debug() |
The aforementioned vital script that was dummied out. Unlike most debug content this script was even dummied out of the demos, though thankfully Chapter 1's version of this script was left in the Nintendo Switch port of the Chapter 1 Demo, revealing this script would have contained the code for setting up, controlling, and drawing the menu. In the Chapter 1 and 2 demos and Chapters 3 and 4, this script is called in obj_time's Step and Draw GUI events, the latter of which was updated in Chapter 3 to add a transparent blue background while the menu is active. This script being dummied out is actually the reason for Chapter 3's boards crashing in debug mode, as they try to check if the "show room name" setting from this menu is enabled, which causes an error when the menu is stripped out. |
scr_84_add_menu_item() |
Adds an option to the debug menu, usually having 3 arguments passed into it: a string that the menu reads to figure out how the option should function, a value to be used as an argument by the option, and a string to be displayed in the menu as the option's name. |
scr_84_draw_menu() |
Draws the menu. Was updated in Chapter 2 to highlight the selected options in yellow, and further updated in Chapter 3 to change how drawing groups works. |
scr_84_push() |
Used to set up a group in the menu, allowing more options to be hidden until the group is selected. |
scr_84_pop() |
Ends the current group being set up. |
scr_84_draw_text_outline() |
Draws an outlined version of the text passed into it as an argument. While technically not unused since it would eventually end up being used for a couple huds in Chapters 3 and 4, this script was originally only created and used for this menu. |
scr_84_is_digit() |
Checks if the argument passed into it is between 0 and 9. Not actually used in the menu (or anywhere for that matter), but it may have been intended for it. |
Broken "Savestate" Functionality#
Starting with Chapter 2, code was added to obj_time's Begin Step event for a savestate-esque feature. However, even in debug mode this feature is disabled by default, and is quite broken when it's re-enabled.
obj_time contains a variable called "quicksaved" that is always set to 0. If the variable is set to 22, pressed F6 will set the variable to 1, save the current value of the camera position, some important global variables such as global.interact, global.myfight and global.turntimer, and create a large array that contains the information of every object that currently exists in the room, saving the state of their built-in variables before finding and saving the information of every variable each object contains.
After this, the quicksaved variable is set to 1. If it's forced to 99, pressing F7 will attempt to restore all the information saved previously. The camera position will be set back to the saved position, and the important global variables will be set back to their memorized values. Next, the game attempts to restore the saved objects. It first changes every instance of an object in the room (besides obj_time and obj_gamecontroller) to an instance of obj_doom, which it then destroys. Second, it creates instances of obj_marker (a generic object with no functionality of its own) in the positions of every object it saved, and attempts to change them into the objects that it saved. However, this is where the system breaks, as the game crashes due to a read-only variable error that results from the objects not being able to run their Create events properly.
Even if some hacking is done to abandon the obj_marker-changing approach and just create the saved objects directly, allowing the objects to run their Create events properly, the game will usually crash due to objects often needing more code run when a room starts to set some important variables, such as with doors. Even if this is bypassed by only using this feature in an empty room with few objects that don't require code to be ran when the room starts, the game will be unable to restore each object's variables properly, causing yet another crash. Given this huge heap of issues, it's unlikely that this feature ever worked as intended.
Rhythm Game (Lightners Live)#
Editor#
|
|
To do: |
Chapters 3-5 contain an entire chart editor within the files, which supports the creation, saving, and loading of charts. This requires debug mode to be active to work fully. In Chapters 3 and 5, the map is protected by Dogcheck, and requires modifying the files to load. Chapter 4 just requires a save edit to load room 40266.
It supports editing all three sections (Drums, Guitar, and Vocals) along with playing each of these charts, though there's nothing programmed in to allow playing the third column of vocals. Starting in Chapter 5, Vocals is instead labeled "Tambourine" for all tracks except Raise Up Your Bat, Flower Man, and curiously, It's TV Time and 4rd Sanctuary.
There's also no way to chart for specifically Normal and Hard, as Hard mode just tightens note timings and doesn't change charts.
Rhythm Game Debug#
|
|
To do: |
If debug is enabled, the rhythm game has a debug mode for itself by pressing O while playing a song. This was stripped out in Chapter 5.
This displays the current FPS and FPS_real (possibly framerate for the underlying rhythm game's hit registering system) above Kris. These will turn red whenever the game's framerate drops under 30.
In the top left, four items are shown: track pos, showing how far you are in the song, fame, which is your 'health', and two numbers- the song's 'note time' and the track position divided by the meter.
- Pressing I will enable auto-play. This requires you to have pressed O prior to pressing I.
- Pressing U causes the game to swap different internal modes, and pressing too many times quickly can cause the game to crash.
- Pressing U once causes it to switch to auto-play; a second time switches it to auto-play with the control prompts enabled.
- A third time greys out Kris's highway.
- A fourth time just completely disables input or gameplay.
- A fifth time causes the game to block out Kris's and Susie's highway.
- A sixth time completely disables the rhythm game UI but gives you back control.
- A seventh time makes Kris, Susie, and Ralsei go into their standing pose, and the stage flashes red.
- An eighth time sets the game into the tutorial song with just Kris's highway.
- A ninth time enables Susie's and Ralsei's highways.
- Pressing U more than 9 times repeats the cycle with the tutorial song selected.
- Pressing/Mashing 4 while starting Raise Up Your Bat will skip the intro. This sometimes causes the song to freak out, but should usually work.
- Pressing P lets you pause the rhythm game. Simple as that. Pausing causes notes yet to appear on the highway to display.
- Pressing R restarts the song.
- Pressing F5 causes the rhythm game to instantly end, showing the results.
- Pressing F6 brings the player to the fail screen (Retry/Quit).
- Holding Left ⇧ Shift then - or + will cause the song's volume to go down or up accordingly.
BIG Combo#
If the note combo is above 999, the display on the chart will stop and simply say "BIG" where the combo number would be. The "MAX COMBO" meter on the bottom right and the results screen will continue counting past 999, however. As no song currently included in Deltarune has over 999 notes, this can only be seen if the player waits a very, very long time during Tenna's explanation of the minigame in Chapter 3.
As of Chapter 4 version 1.03 and in Chapter 5, this can also now be seen when playing "Raise Up Your Bat" while Susie isn't in the party. Around the end of the song her lane will display a "BIG" combo.
Freeplay Mode#
|
|
This page or section needs more images. |
If the freeplay variable in the rhythm game object is set to a negative number, it will show a menu letting you select which song to play. In Chapter 3, this menu is locked behind debug mode, requiring that the Cancel button be held down while loading the room during the physical challenge version of the minigame (but NOT the A-rank version, weirdly enough). However, in Chapter 4 this menu can be accessed by holding minus on the numpad as the minigame starts, and this does not require debug mode! Unfortunately the song titles in the Chapter 4 version don't actually correspond to the songs that will be played, but it does allow some of the special Chapter 3 songs to be accessed in normal play.
In Chapter 5, the menu is entirely inaccessible without adding code somewhere that sets freeplay to negative, because nothing exists that does this anymore.
Allcaps Asset Names#
|
|
To do: |
The window captions used throughout Chapter 1 change in some cases to denote context; the 'light world' sections use title case (e.g. "The Beginning", "The Return") and the 'dark world' sections, along with everything else, use upper-case (e.g. "THE DARK", "CONTACT", "DELTARUNE").
Internally, most of the game's assets are named using a similar though distinct convention of upper/lower case. Unlike the window captions, the "Dark World" assets, like the "Light World" assets, use lower case, abbreviated prefixes (in Undertale, these were the only prefixes used). Allcaps prefixes/names are only used in the following contexts:
- The CONTACT sequence at the start of Chapter 1 and everything associated with it.
- The logo screen and main menu (both versions of it).
- The game over ("FAILURE") screen.
- The dogcheck room.
- "UNUSED", a series of unique "scripts" found in each chapter.
- Most variable names in DEVICE scripts.
- The ominous grinning face with pink and yellow eyes, with the internal name of "FRIEND", though in Chapter 3 it's simply referred to as "_" instead.
These are effectively all of the "out-of-bounds" sections of the game, as it were, with the exception of the ending credits and the "FRIEND".
Below is a full list of the used prefixes:
Type |
Normal prefix |
Allcaps prefix |
Notes |
|---|---|---|---|
Sound |
|
|
|
Music |
|
Most of the music doesn't use a prefix, but the few that do use these. |
|
Sprite |
|
|
|
Background |
|
||
Script |
|
" |
|
Font |
|
||
Object |
|
|
|
|
As mentioned above, this seems like it should logically be the script prefix. |
||
Room |
|
|
" |
Variable names within allcaps objects also follow this convention, mostly being in allcaps as well, in addition to sometimes utilizing slightly more verbose terminology. One notable counterpart for a common local variable is EVENT, used in place of con (condition/conversation).
(Source: Original TCRF research)
Music/Sound Metadata#
|
|
To do: |
Similar to Undertale and its demo, some audio files contain metadata. Most of it seems to come from FL Studio.
Chapter 1#
(most files) |
Name |
|
|
Name |
|
|
Name |
|
|
|
|
Name |
|
|
|
|
Name |
|
|
|
Chapter 2#
|
Name |
|
|
|
|
Name |
|
|
|
|
Name |
|
|
|
|
Name |
|
|
|
|
Name |
|
|
|
Chapter 3#
|
Name |
|
|
|
|
Name |
|
|
|
|
Name |
|
|
|
Chapter 4#
|
Name |
|
|
|
|
|
|
|
|
(some files under the root folder - seems to be added by GameMaker) |
Name |
|
Files with |
Name |
|
Chapter 5#
|
Name |
|
|
|
|
Name |
|
|
Name |
|
|
Name |
|
Misc.#
|
Name |
|
|
|
|
Name |
|
|
Name |
|
The mentions of "LAME in FL Studio 10" imply that some files were converted from MP3s - LAME is a MP3 encoder.
Due to reusing Undertale's snd_hit file for snd_hit_(ch1), the "Snoopy, Come Home" (which is the title song for the 1972 movie with the same name) metadata is intact.
(Source: Original TCRF research)
Alternate Project Name#
Although the game's project is simply named "DELTARUNE", there seems to be an alternate name used internally by the developers: "sunkus". This can be seen in the igor.output.manifest file in the game's install folder, where it's called "sunkus_kb_check" and "sunkus_kb_block".
Although it's unclear why the project is called sunkus, it's possible that it was named after Circle K Sunkus, a Japanese convenience store chain that was rebranded in 2016.
Leftover Build Paths#
|
|
To do:
|
Before v22, an igor.output.manifest file was left in the game's install folder on PC that had a build path for the game, including a build date for the current version.
Version |
Release Date |
Build Date |
Path |
|---|---|---|---|
v1.0 |
June 4, 2025 |
June 2, 2025 |
/ProgramData/GameMakerStudio2-LTS/Cache/runtimes/runtime-2022.0.3.104/bin/igor/windows/x64/250602_SUNKUS.zip |
v1.01A |
June 6, 2025 |
June 6, 2025 |
/ProgramData/GameMakerStudio2-LTS/Cache/runtimes/runtime-2022.0.3.104/bin/igor/windows/x64/250606_SUNKUS.zip |
v1.01B |
June 8, 2025 |
June 7, 2025 |
/ProgramData/GameMakerStudio2-LTS/Cache/runtimes/runtime-2022.0.3.104/bin/igor/windows/x64/250607_SUNKUS.zip |
v1.01C |
June 9, 2025 |
June 8, 2025 |
/ProgramData/GameMakerStudio2-LTS/Cache/runtimes/runtime-2022.0.3.104/bin/igor/windows/x64/250608_SUNKUS.zip |
v1.02 |
July 8, 2025 |
June 18, 2025 |
/ProgramData/GameMakerStudio2-LTS/Cache/runtimes/runtime-2022.0.3.104/bin/igor/windows/x64/250618_SUNKUS.zip |
v1.03 |
July 23, 2025 |
July 2, 2025 |
/ProgramData/GameMakerStudio2-LTS/Cache/runtimes/runtime-2022.0.3.104/bin/igor/windows/x64/250702_SUNKUS.zip |
v1.04 |
August 5, 2025 |
July 23, 2025 |
/ProgramData/GameMakerStudio2-LTS/Cache/runtimes/runtime-2022.0.3.104/bin/igor/windows/x64/250723_SUNKUS.zip |
v1.05 |
August 26, 2025 |
August 21, 2025 |
/ProgramData/GameMakerStudio2-LTS/Cache/runtimes/runtime-2022.0.3.115/bin/igor/windows/x64/250821_SUNKUS.zip |
Although the Nintendo Switch version has no manifest file, it includes what seems to be a path to a Nintendo SDK and a build path for the game in its options.ini file, though it lacks a build date.
[LLVM-Switch]
SDKDir=C:\Nintendo\sunkus\NintendoSDK
UseNEX=False
UseNPLN=False
nMeta=C:\Users\sodon\Projects\01-DELTARUNE\20-Launcher\sunkus-launcher\DELTARUNE\options/switch/SWITCH_FULL/application.nmeta
(Source: Original TCRF research)
References#
|
The Undertale series | |
|---|---|
|
Windows, Mac OS X, PlayStation 4, Nintendo Switch |
Undertale (Prototypes) • Deltarune (Demos) |
|
Linux, PlayStation Vita, Xbox One, Xbox Series X |
|
|
PlayStation 5, Nintendo Switch 2 |
|