Introduction Last updated: 7 Jun 2023

PumpSanity it's a Pump it Up simulator, based on StepMania 5 engine with a lot of new features and customization options. In this documentation we are gonna explain some important features that are gonna be useful for customization in game and stepmaking. Remember that if you have a question about this project, feel free to ask in our Discord


  • Operative System: Windows 11, Windows 10, Windows 8.1, Windows 7 Service Pack 1.
  • RAM: 2GB or above
  • Graphic Card: Any video Card 1 GB VRAM or Above.
  • CPU: Any Processor 2.4 GHz or Above.
  • DirectX Jun 2010 Redistributable: Download here
  • Visual C++ 2022 Redistributable: Download (32 bits) Or Download (64 bits)

Important Notice about Windows 7

Windows 7 is not longer supported. You need to get the Service Pack 1 in order to execute the game.

How to Install

  • Unzip/UnRar Game
  • Run the executable located in Program32/Program64
  • Add Song groups to /Songs/ Folder or put the SongPack Zip File into /SongPackages/

StepF2 Simfiles conversion

You don't longer need an external converter, we have an in-built converter now. You just need to place your Song groups from STEPF2 into /Songs/ folder just like another common group. Once you start the game, these files are going to be converted and leave a backup file from the original simfile. Keep in mind that these converted simfiles will not be compatible with STEPF2 after conversion.

Game Configuration


  • Press F3 to open PumpSanity Configuration: Use this section to edit almost every option in this game.
  • On PumpSanity Configuration: Use your arrows to navigate and press Enter to select.
  • Press F1 to open the service Menu: This is the same as PumpSanity configuration, but with less options.
  • On Service Menu: Press F1 to navigate, and F2 to select an option.


  1. Create a new profile to save your stats. Go into PumpSanity configuration > Profiles > Create New.
  2. Enter a new name profile, press Enter to confirm and exit the screen with Escape key.
  3. To select a profile, use DownLeft or DownRight in the Title Screen.


  • Go into PumpSanity configuration > Calibration/Sync.
  • If you think you made a bad calibration, delete the file Preferences.ini from /Save/ folder.
  • Deleting the file Preferences.ini will delete every option that you changed from PumpSanity Configuration.

Video Card Configuration


  1. Open Nvidia Control Panel
  2. Select 'Manage 3D settings' from 3D Settings
  3. Search for 'Low Latency Mode' and set it to On
  4. If you are under low graphic card and/or old video driver, search 'Maximum pre-rendered frames' and set it to 1


You can also disable VSYNC 'Vertical Sync' in game, although we recommend to play the game under stable 60 fps. Arcade works under these frames per second. If you play under more/less than 60 fps, you will encounter a laggy or a super-ultra smooth gameplay and frame time that may feel different than the original game. You have been warned!

Frequently Asked Questions

This section is to answer some common questions, we are gonna update this in case something is not clear ;)

How can i install Songs?

You just need to place your song folder (including audio, image and simfile) into a group folder.

Left Side: Group Folder with a highlighted Son group - Right Side: Inside Song folder.

What's a Group folder?

A group folder can contains many songs; you should put the Group Folder into from /Songs/ Folder. it will show in the game as a from "Channel". To set a banner channel, sound and a description, you should add a picture (512x512), a sound file (mp3), and a text file; they should be in the group folder. This channel information should be located in a folder called from"info"

Left Side: Song's Group Folder - Right Side: Inside info folder.

My game looks like minecraft, can i get a max resolution setting?

Sure. The native resolution is 720p, but you can also play this game at 1080p or above. Remember, you need good specs in order to play this game at max settings.

Open PumpSanity Configuration > Graphics/Sound Options and change these values

  • High-Res Textures : Force On
  • Texture Resolution : 2048.
  • Display Color & Texture Color : 32Bit.

What is a Profile? Should i use it?

Profiles are needed to save your progress, your song scores, mods from command window and your profile customization. You can play with the 'PUMPITUP' system profile , but it will not save scores and will start on BasicMode always (Unless it has event Mode enabled)

I have like 2000 songs. How can i search a title?

Press F11 in Select Music Screen, and type the name of the song. Press enter and the result will be filtered.

What is Event Mode?

Event Mode is an option to disable heart system, so you can play unlimited songs without restriction, even if you have stagebreak activated. Timer is also disabled.

Can i add an external group folders?

Yes. You need to open the file Preferences.ini from /Save/ folder. Search for the key: AdditionalSongFolders and add as value your folder path, you can also use multiple paths splitted by commas. With this option, you should be able to load songs from external devices too.

AdditionalSongFolders=C:/MyExternalGroupFolder, D:/Songs/MyAnimeSongs, F:/ExtensionSongs

Can i load SongPacks from a zip file?

Of course! Be sure the Song's Group Folder is zipped. And put the zip file into /SongPackages/ folder

Left Side: The zip file located in SongPackages folder. Right Side: The group folder zipped that contains a lot of songs.

What are those BGA/SongMovies files?

They are video background songs. They are optional but brings a very good experience in game. Put every MP4/MPG file to /SongMovies/ folder.

Can i add an external SongMovies/BGA folder?

Yes. You need to open the file Preferences.ini from /Save/ folder. Search for the key: SongMoviesPath and add as value your folder path, you can also use multiple paths splitted by commas. With this option, you should be able to load songs from external devices too.

SongMoviesPath=C:/MyBGAS, D:/AnimeBga, F:/SongMoviesFromStepmania

What are those *.nobga files?

NOBGA Files are fully parsed original BGA files. They Replaces all old engine BGA except the ones from EXTRA engine.

Downloaded nobga files here: (Download Section)
  • NOBGA files are only from 1ST-PERFECT Collection to EXTRA-PREX3 songs.
  • Size is very small and they run smoothly in gameplay.
  • They can replaces MPG files from those song's group folders, you don't longer need them.

I want to use *.NOBGA files, where should i put them?

Move *.NOBGA files to /NOBGA/ folder.

What keys should i press?

By default, this is the keymap, but you can change it in PumpSanity Configuration:

Q - Z - S - E - C : Player 1
1 - 7 - 5 - 9 - 3 : Player 2

What is FullMode and Basic Mode?

Basic mode will only show the BASIC MODE group folder. Full mode will show all group folders (channels) and open the command window. In order to view all channels, you need to activate it by a code, play under event mode, or using a profile.

What is the command window and how can i open it?

The command window is panel were you can use custom mods, velocity, noteskins and its only available under FullMode. You should use this combination to open it.

How can i enter to QuestWorld, WorldMax or InfinityMissions?

Before playing these custom modes, you should get some specifics SongPacks. You can download them (Download Section) and put those ZIP files in /SongPackages/ folder. After this, on Title Screen press Right/Left two times. Remember, this is for missions only

I want to go back to the Main Menu, but i don't want to Press F1 or restart the game.

Press UpLeft and UpRight for a few seconds will trigger the player to leave the current mode. This also works when there are two players playing and one of them wants to leave. This feature works for WorldMax (Map), Infinity (Mission Select), FiestaEx QuestWorld (Map) and the current theme played. Under select screen music from the current theme, you need to go back to channel selection first to later perform the button combination, otherwise, it will not work.


In this section we will show some features in game. Some of them don't work in another stepmania build.

File Compatibility

  • SSC: Stepmania 5 Sim File
  • UCS: User Custom Step File (Pump it Up)
  • SMA: Stepmania AMX File
  • SM: Stepmania file (old)
  • KSF: Kick it Up File
  • BMS: BMS File
  • DWI: Kilgamayan - Daisuke File

.ssc.ext Files (PumpSanity UCS extensions)

You can now create new steps and share only your step with your friends. This only works if you are using our SongPack (JUMP, MOBILE,RIO,PRO,PRO2,INFINITY,1STPERFECT,EXTRA-PREX3,EXCEED ZERO,NX-NXA,FIESTA,FIESTAEX,FIESTA2,PRIME,PRIME2,XX,PUMPSANITY) , once you create the step from the editor, the game will create a file in the song folder with an extension file (*.SSC.EXT) that you can send to your friends. Your friends should also use our SongPack.

*.UCS File support

We are giving support to *.UCS files converting it to our UCS EXT format. In order to avoid problems you should follow these steps. Your original ucs file will not be edited or deleted by the game.


  • Copy your *.ucs file to the song folder that you are looking for. (Example: Toccata from NX-NXA)
  • Start the game. Once the first load finished, the game will create a ssc.ext file based on your UCS. The game will now use the extension ssc file (*.ssc.ext), if its not. Reload Songs from PumpSanity Options
  • Open Step Editor, and now you can edit the chart and their properties. Remember to delete the *.UCS file to avoid overwritten issues


GhostHold Effect is not supported and will be taken as Hold in the game.

ssc.ext will work properly with a main *.ssc file, because they are just extensions. Even so, you can use only ssc.ext files and play, but you have been warned.

You will use this feature under your own responsibility, remember that you can also open this file with notepad, so go ahead and have fun!

PIUIO support

We have an experimental PIUIO internal driver that you can try. In order to make it work you should follow these steps:


  1. Uninstall IO2Key (In case you have it)
  2. Download Zadig from here
  3. Select your correct input device and select “WINUSB Driver”
  4. Click “Install Driver”.
  5. Once you start PumpSanity, the game should connect automatically to the dance

Double Display Perspective

Both StepMania and K-Pump draw note arrows in 3D space. The effect of this isn't visible in basic gameplay, but it can be seen clearly when mods that move the arrows alongside the Z axis are activated (sink, rise, nx, bumpy etc.)

Unfortunately, StepMania and K-Pump draw note movement alongside the Z axis differently. Since PumpSanity needs to simulate both StepMania and K-Pump based games, this causes a problem. Using K-Pump method to draw notes means that StepMania mods will look incorrectly. And similarly, using StepMania method will do the same to K-Pump mods.

To solve this:

#DISPLAYPERSPECTIVE ssc tag can be added to any chart to indicate which drawing method it should use.

  1. #DISPLAYPERSPECTIVE:PUMP; - means that K-Pump drawing method should be used (this is the default).
  2. #DISPLAYPERSPECTIVE:PRO; - means that StepMania drawing method should be used.


As a rule of thumb, stepmakers should use the default K-Pump method of drawing, since players are able to select only K-Pump mods from command window, so most players will be playing using only those mods. StepMania method od drawing should mainly be used for modcharts/quests which make heavy use of StepMania mods. However, it's worth noting that regardless of which drawing method was selected, mods from any game which do not move the notes alongside the Z axis will look good.

Custom Music Train

MusicTrain is an special song that contains a list of songs and steps that will be playable consecutively, up to 100! Creating a list is easier than you think; remember to follow these steps to make it work properly:


  • Preview Banner file: Resolution (464x264), PNG/JPEG Format
  • Preview Audio File: MP3/WAV/OGG Format, 12 sec length or less
  • Preview Video File: MPG/MP4 Format (Optional) Max Resolution(640x360)
  • Our SongPack (Recommended) or the Song Pack that you are sharing with the current musictrain.


  1. Create a folder in MUSICTRAIN folder (The folder name will be shown in the game)
  2. Put your files (Banner,Audio, Video) in this folder
  3. Create an INI file called MUSICTRAIN with a suffix in the MUSICTRAIN folder (IE: musictrain_First.ini). If you dont know how to create an INI File, open notepad and save the textfile with ini extension

MUSICTRAIN_* INI STRUCTURE (open your Musictrain_First.ini):

  • Your folder name should be between “[“and “]”, this is the section that will be read in game (CASE SENSITIVE)
  • The key “SONGS” will store every song folder that you want to show in the Train
  • The key “STEPS” will store every step from the songs that you stored in SONGS key
  • Add more songs and steps using a comma to split between songs/steps

  • SONGS must have GroupFolder and the SongFolder to work properly. IE, if you want to add Desaparecer from XX, then you should write: 13.XX/16D0 – Desaparecer. If you are using a custom folder or custom song, then you should write the path from it

    STEPS must have the step type, meter, and the label from the step. For example, if you want to use the Double 23 from Desaparecer, you should write, D23 or D23 NORMAL. If you want to use an UCS, then you should add D23 UCS

    Songs and Steps Lists are sort manually, if the first song value in SONGS is Latino Virus, then the First value in STEPS must be a valid step from Latino Virus Song only. Same with the rest of the songs and steps.

    This is the result of the first music train, if everything is good, you will be able to play it.


    You need to be specific about the step info. If the song have two Single 12, but the first step in the list is UCS. You need to specific the label, otherwise it will take the first one that match with the meter. Check the list of Labels here (LabelType)

    You can also edit the INI file in real game time (Screen Select Music). Just switch between songs (Scroll) and the step list will be refreshed.

    The INI file is not saving the song or the step itself, its just linked reference. If you share your music train and the other user doesn't have the song, then the song will be skipped.

    Custom Sort Channel

    Custom Sort will give you a way to make a new Sort for songs from your Group Folder. Be aware that once you use custom Sort, the game will not play the category sound, and this custom sort will be only available when you enter your channel.

    Create a new text file called sort in the Song group Folder and open it:

    Now type the folder names with the order you want using a new line always. Save the file and start the game.

    (1) PE328 - Gargoyle
    (1) PE325 - Electrock
    (1) PE327 - Frozen
    (1) PE326 - EternuS	

    Your Group Folder now will looks customized sorted

    Favorites Channel

    In this channel, your favorite’s songs are saved.
    Hold the Center button when choosing the song to set it as Favorite. You will see a label (Red or Blue) that works as a favorite reference. You can save up to 300 songs in this channel. To delete a song from favorites, you need to repeat the sequence.

    Coop Assist Mode

    You wake up, turned on the PC and want to play some coop charts with your f... oh, so you don't have friends. We got you! On Select Music Screen, while choosing the coop step, press F8 to enable/disable the coop Assist Mode. How does it works? You can select what PlayerSide (NoteSkin) play, and the other side will be played automatically. Yes. You can play Tribe Attacker Co-Op X4 like a lone wolf just playing the 4th PlayerSide or Pink Fuzzy Bunnies Coop alone like a fricking psycho.

    Coop Assist Mode activated for Player 1 NoteSkin. Player 2 noteskin is being pressed automatically and the color its less brigth


    This feature is for practice/fun only. Once its activated, scores are not saved and the Evaluation Screen will show the current stage as AUTOPLAY.

    Coop Assist Mode is currently not available for WorldMax & QuestWorld

    Stream Helper Integration

    We are giving a dynamic tool for streamers, currently there are some features included on it, but we can still add more


    • Viewers can send song requests
    • Viewers can send attacks to your current gameplay
    • Viewers can react, and their reactions will be shown in gameplay


    You need to use the tool, that will work as a bridge between the game and the stream service. We called it 3SL and it's open source. Before using this tool, you need to have Node.js installed. Download Node.js Here (Recommended: v18.12.1)

    The current tool support Youtube and Twitch.Youtube and Twitch have no huge delay.

    1. Download 3SL version 0.3a, you can download the tool here. Unzip the file in a new folder.
    2. Open the file config.ini and complete the configuration, based on what service you are going to use. (Read Below)
    3. Search the key: GamePath. And set the value with the Path of PumpSanity Game. (This is for reactions in game)
    4. Always run the file runclient.bat after you executed Pumpsanity.
    5. If connection is successful, you will recieve a Bonjour message, and a notification will be shown in the game.
    6. Open PumpSanity Configuration in game, and select 'Client Helper Options' or 'Opciones de Ayudante del cliente' to change the settings of current features.

    • Service Configuration


    1. Open the file config.ini and search the Twitch Section
    2. Get the OAuth Password from your channel
    3. Set your OAuth Password in config.ini - [Twitch] > 'OAuth' Key
    4. Set your channel name in config.ini - [Twitch] > 'ChannelName' Key


    1. Open the file config.ini and search the Youtube Section.
    2. Open the Studio Section on Youtube.
    3. In Livestreaming section, extract the code from the url. (Check image below)
    4. Set your LiveId in config.ini - [Youtube] > 'LiveId' Key.

    Song Request Configuration

    Open the config.ini and change the value (in seconds) for CooldownSongReqPerUser in [Global] section, this will apply a cooldown per user. You can also toggle this option (Before joining to gameplay) using the key CTRL + F6 on Select Music Screen.
    Every Song Request is located in Song Request Channel (From Game Interface). You can disable if songs can be requested in gameplay.

    Attacks Configuration

    Open the config.ini and change the value (in seconds) for CooldownAttackPerUser in [Global] section, this will apply a cooldown per user. You can also toggle this option (Before joining to gameplay) using the key CTRL + F7 on Select Music Screen. Attacks will be applied in Gameplay. And user will be on cooldown.

    Attacks: WhiteList

    In case you want to allow some attacks that viewers can send, open the file mod_whitelist.txt, and type in a new line the attack that you want to recieve in gameplay Check the attack list here.

    Reaction Configuration

    Open the config.ini and set the value of GamePath from [Global] section to your current game path. This will locate the 'Reacts' folder, read every picture file, and users can send a react based on the filename image, exm: (yes). Reactions will be shown in gameplay.

    • User Interaction


    Type in chat !a (attack) to send any attack, you can also separate attacks by comma, example !a beat (This command will only work if Streamer has 'attacks reciever' enabled)

    Song Requests

    Type in chat !r (song name). You can use a comma to specify a comment/detail of request, example: !r yog sothoth, s9 please. Comments should be less than 20 characters (This command will only work if Streamer has 'song request reciever' enabled).


    You should just type the name of any filename from the 'Reacts' Folder in game. Example: kannapogg . Remember, streamer should have this option enabled and also configured.

    Important notice about this tool

    This tool is open source, and it should be updated sometime in order to work properly. service is currently deprecated due to the limited functions, but it should work on personal profile pages. However, we are not giving support anymore.

    Every 'request' to the game has a cooldown per client id. However, you can change this time (in seconds) in config.ini, (Check [Global] Section)

    After doing a change in config.ini file, you need to restart the stream tool to see the changes.

    Step Editor

    In this editor you can change and add a lot of things, but we included new features on it

    MP3 audio issues on Editor

    This issue is most of the times related to the variable bitrate (VBR). We recommend using MP3 files with CBR (Constant bitrate) or OGG files.

    SimFile Information

    There are new values that you can edit/add on your simfile

    Song Information

    While using Step Editor, Press Escape > Edit Song Info

    • Category:
      • NEW TUNES: Not specific, but will be placed at first
      • ORIGINAL: Original from Pump It Up
      • K-POP: Korean Pop
      • WORLD MUSIC: WorldMusic used on Pump It Up
      • J MUSIC: Japanese music used on Pump It Up
      • XROSS: Licensed music from other games used on Pump It Up
      • USE_GENRE: Custom Category, you should set or specific the GENRE
    • Genre: You can use this value as a new category if you set Use_Genre as CATEGORY
    • Hearts: How many hearts you need to play and show this song on Music Select Screen
      • FULLSONG: 4 Hearts
      • REMIX: 3 Hearts
      • NORMAL/ARCADE: 2 Hearts
      • SHORTCUT: 1 Heart
    • Volume: Set Volume of Song on Gameplay, value recommended between 80-150. Default: 100

    Step Information

    While using Step Editor, Press Escape > Edit Step Information. It will only change values under the stepchart.

    • Label Type: It will be shown in SelectMusic and change the behavior of stepchart sometimes
      • NORMAL: Doesn't do anything. Default one.
      • UCS: User Custom Step
      • ANOTHER: User Custom Step Another
      • UCQ: User Custom Quest Step (Without Goal)
      • DIVISION: Step will not be shown in game but you can play it using DIVISION MODE in game
      • S1, S2, S3, S4: Exclusive for Quest Channel
      • NEW: New Label.
      • QUEST: User Custom Quest Step (Without Goal)
      • PRO: PRO SERIES Step
      • HIDDEN: 'Hidden' Step
      • TRAIN: 'Train' Step, these one are generally used on musictrain or progressivemode.
    • Quest Mods: What kind of mods the step will activate once the game started, exclusive on Quest Channel. Check all available mods here. You should splits the mods with a ','. Example: nx2,nxmode
    • Quest Initial Bar/Quest Bar Max: This will change the behavior of LifeBar on Game, Exclusive for Quest Channel. Values can go from 0 to 999999 but normal lifebar goes between 0-1000. Higher Values will give a strong lifebar and it will be hard to reach 0
      • Quest Initial Bar: Song will start with lifebar filled. Default: 500
      • Quest Bar Max: Resize Total LifeBar value. Default: 1000
    • Quest Description: Set description quest that will be shown in Game once you pick the step.

    Set Auto Velocity

    You can set the AutoVelocity on Editor to View/Edit your Chart under this Scroll Velocity.

    Key Shortcuts

    • LEFT CTRL + (1 to 9): Edit Timing Data
    • RIGHT CTRL + (1 to 3): Change Speed Behavior
    • LEFT CTRL + (+/- from keypad or ?/¿): Change Notefield Zoom
    • LEFT CTRL + Mouse Wheel: Change Scroll Size under editor
    • LEFT CTRL + (Left/Right Arrow): Change Music Velocity
    • M: Change Tap Notes, you can check the full list here
    • N: Change NoteSkin
    • O: Change Skin for TapNote/Item (Item skins only)
    • K: Change Layer Score between Normal, Fake, Bonus
    • J: Change Layer Display between Normal, Vanish, Hidden, Flash
    • H: Change Layer Display between ZigZag, Snake, Dizzy, Twirl, Sink, Rise
    • G: Change Tap Behavior, it can be considered as Normal,Tap or Hold.
    • T: Change timming segment edit (step/song).
    • F4: Edit timming segment of current row.
    • F5: Edit division of current row.
    • SHIFT + F5: Edit special division of current row.

    Tap Note Types

    • Tap: Normal Tap Note
    • Mine: You will lose LifeBar
    • Lift: No description about it
    • Left: Change Notefield Rotation
    • Down: Change Notefield Rotation
    • Up: Change Notefield Rotation
    • Right: Change Notefield Rotation
    • X1: Change Velocity to 1x
    • X2: Change Velocity to 2x
    • X3: Change Velocity to 3x
    • X4: Change Velocity to 4x
    • X8: Change Velocity to 8x
    • Heart: Heart Item. Without Behavior
    • Potion: Potion Item. You will gain LifeBar
    • GathPotion: Gathered Potion Item. You will gain LifeBar (not specified value available for now)
    • Weather: Weather Item. Notes will Flash for 10 sec
    • Mouth: Bite Item. You will lose LifeBar (not specified value available for now)
    • Nuke: Nuke Item. You will lose LifeBar (not specified value available for now)
    • Drain: Drain Item. Without Behavior
    • Squid: Squid Item. Without Behavior
    • Rocket: Rocket Item. Without Behavior
    • 2UP: Change Notefield Rotation. Like Up Item
    • Random Item: It will randomed show an Item
    • Random Active Item: Random Item. Without Behavior
    • Random Velocity: It will randomed changed the Velocity
    • Action: Action Item. Without Behavior (Can be used for DIVISION MODE)
    • Shield: Shield Item. Without Behavior (Can be used for DIVISION MODE)
    • Change: Change Item. Without Behavior (Can be used for DIVISION MODE)
    • W: Wild Item (can be used for DIVISION MODE)
    • G: Groove Item (can be used for DIVISION MODE)
    • WRAP: You will be random redirected to another StepChart with the same StepType or with filtered DIVISION LabelType Chart. Its Hidden and will be activated automatically once it reach the receptor (for DIVISION MODE)
    • WRAP0: You will be redirected to the main step that you choose before entering the Gameplay. Its Hidden and will be activated automatically once it reach the receptor (for DIVISION MODE)


    Division Mode can be used under Normal or Quest Channels, you can find more information about division mode here.

    Division Mode

    Division Mode is a great feature that can improve your stepchart, it will switch your stepchart to another chart of the same steptype in realtime gameplay, its conditional so you need to use it carefully.

    Division Mode is a conditional segment function. The game will detect how many specific tapnotes (Items/Taps) were pressed before the segmented row, and will switch to an specified step chart if the condition is true.

    In Step Editor, press F5 to open the Division Menu, fill the sections and select 'Set Division Condition' to store the condition in the current second.

    MINIMUM VALUE: Minimal value of specified tapnote pressed before to be checked.
    MAX VALUE: Maximum value of specified tapnote pressed before to be checked.
    CHART NAME: Name of chart that will be switched if condition is true, destination #CHARTNAME stepchart should have this value too.
    TAPNOTE: Its accumulated in gameplay and the count will be reset if condition is true (Just in some scenarios, read below)
    • W: Wild TapNote - TapCount will be resetted if condition is true and will switch.
    • G: Groove TapNote - TapCount will be resetted if condition is true and will switch.
    • WG: Groove and Wild count should be equal or more than minimum and less or equal to maximum to switch. (Tap count will stay).
    • WGR: Groove and Wild count should be equal or more than minimum and less or equal to maximum to switch. (Tap Count will reset)
    • W&G: If Wild's tap count its the same as Minimal Value and Groove's tap count its the same value as Max Value it will switch. (Tap count reset) The CHART NAME key should have '&&' that will be splited. Example: CHART 1&&CHART 2. If condition is true, the game will switch to CHART 1, otherwise, CHART 2.
    • W&G&A: If Tap count of Wild is the same as Minimal Value and Tap count of Groove has the same value as minimal Value and Tap count of Action has the same value as minimal value it will switch. (Tap count reset) There is no CHART NAME to set. If condition is true, the game will switch to the chartname with #CHARTNAME:1, otherwise it will switch the chartname with #CHARTNAME:2.
    • PERFECT: Perfect's tap count should be equal or more than minimum and less or equal to maximum to switch. (Tap count will reset)


    You can set a noteskin/layer to Groove, Wild, Action. For example, Groove can use a hidden layer, or/and a Basic NoteSkin.

    Its recommended that every Division Chart destination should be labeled as DIVISION, so they will be hidden in game and only activated when the condition comes true.

    Division Segment should be edited and created under the main stepchart only.

    Keep in mind that every division stepchart should have the same beatbar/rownumber as the main stepchart. If the destination stepchart has another beatbar, you will encounter some 'jumps' and glitches while switching.

    Static Division Set (aka Special Division)

    Special Division is an extra function that will convert Groove or Wild TapNote into a stepchart switcher. If the player press Groove or Wild TapNote, it will automatically switch to the destination stepchart.

    Press Shift + F5 to open the Special Division Menu. And write the chart name destination for the specified TapNote.

    Wrap and Wrap0

    Wrap and Wrap0 are tapnotes that will automatically be pressed once it reach the receptor and their actions are switch to another stepchart
    Wrap will switch to a random stepchart (with the same steptype) or switch to a random stepchart with the labelype 'Division'.
    Wrap0 will switch to the stepchart that you select first to play.

    SimFile Demonstration

    We are attaching a file where you can see how Division/Division Special and Wrap items are working.

    Download the simfile here

    Step Editor Tricks

    Here are some tricks that stepmakers can use in their charts to customize them.

    Using custom receptor noteskin in chart

    For single, double, and double perfomance charts with level 50 or above, you can set a custom receptor. Insert a TapNote with a custom skin in the first column/row, if this TapNote is not part of the chart, you can set it with Fake Layer and Hidden Display Layer.

    Editor: TapNote with perfomance 2 noteskin with layer Fake and Hidden on first row/column
    Result: Perfomance Skin 2 Receptor in coop chart (double-perfomance)

    Quest Channel System (Missions)

    Quest Channels are Groups where you have songs with stepcharts lockeds, and the only way to unlock them is playing it consecutively from the first one. These steps can have pre-requisite in order to unlock the next stepchart in the row.

    Quest Channels have a green background, Categorized as 'Quest' and there are only 4 steps slots visible on Prime.

    Creating Quest Channel (Mission)

    • Create a text file (empty) with the name "quest" inside the song's group folder. The game will recognize the Group Folder as a Quest
    • Be sure that your songs have stepcharts labeled as S1,S2,S3 or S4 (Use Step Editor)
    • (Optional) Use a description for every quest step, you can split the language with a @ - (Use Step Editor) Reference:
      • #QUESTDESC : Survive until the end@Sobrevive hasta el final@Passe da música
    • (Optional) Insert mods on the stepcharts, so the song will start with these modifiers (List of Mods below)

    Quest Mods

    Appear Vanish Flash Nonstep Boost
    Brake Wave Expand Boomerang Drunk
    Dizzy Confusion Mini Tiny Flip
    Invert Tornado Tipsy Bumpy Beat
    XMode Twirl Roll Rise Hidden
    HiddenOffset Sudden SuddenOffset Stealth Blink
    RandomVanish Reverse Split Alternate Cross
    Centered Dark Blind Cover RandomSpeed
    Mirror Backwards SuperShuffle Wide Big
    NXMode UnderAttack LeftAttack RightAttack Drop
    Snake ZigZag 100% Rise -100% Rise HideJudge
    ExtraJudgement HardJudgement VeryHardJudgement UltraHardJudgement JudgeReverse
    BreakOff Move (require column index) MoveX (require column index after X) MoveY (require column index after Y) MoveZ (require column index after Z)

    Creating Quest Goal

    There are two ways to create a quest goal, it can be based on LUA or INI. INI is only for basic requisite, while LUA is more advanced. These files should be attached in the same folder of the Song, and they can't be activated at the same time. So choose wisely.

    Song Folder should contain the INI File or the LUA file (Lua file can have any name, and ini file should be called "QuestConfig" )

    INI Goal

    Quest Goal from INI its a simple way to create a requisite for the stepcharts in the songfolder. Remember, this system is only for basic requisites. Create a file text called QuestConfig but with the INI extension.

    INI structure is splitted in S1 S2 S3 S4 and the keys inside are the requisite per step, you can use multiple keys.

    Example: QuestConfig.ini
    Key Value Type Description Aditional Values
    PERFECT Numeric How many perfects player need to do in order to pass the quest. > or <
    GREAT Numeric How many greats player need to do in order to pass the quest. > or <
    GOOD Numeric How many good player need to do in order to pass the quest. > or <
    BAD Numeric How many bad player need to do in order to pass the quest. > or <
    MISS Numeric How many miss player need to do in order to pass the quest. > or <
    HEART Numeric How many hearts player need to do in order to pass the quest. > or <
    POTION Numeric How many potions player need to do in order to pass the quest. > or <
    MINE Numeric How many mines player need to do in order to pass the quest. > or <
    ITEMS Numeric How many total items player need to do in order to pass the quest. > or <
    VELOCITY Numeric How many velocity items player need to do in order to pass the quest. > or <
    HIDDEN Numeric How many hidden items/taps player need to do in order to pass. > or <
    MAXCOMBO Numeric Set Max Combo player need to reach to pass the quest. > or <
    MISSCOMBO Numeric Set Max Combo player need to reach to pass the quest. > or <
    LIFEBAR Numeric/Float Set LifeBar player need to do to pass the quest (0 to 100). > or <
    SCORE Numeric Set Score player need to do to pass the quest. > or <
    GRADE String Set Grade player need to do to pass the quest. Multiple Values
    FLAG String Set Special Flags in ordet to pass the quest. Multiple Values

    Multiple Values on Keys

    • GRADE: SSS, SS, S, A, B, C, D, F
    • FLAG: QuestMode doesnt allow autoplay or breakoff, because autoplay will give you a failed mission, and breakoff will give you the stagebreak screen with a failed mission. Add these flags to allow the game pass the quest.
      • AUTOPLAY: Declare this stepchart has autoplay mod
      • BREAKOFF: Declare this stepchart has breakoff mod

    This is an example of QuestConfig.ini. STEP1 requires Grade A or S to pass, STEP2 requires to press less than 80 Mines and it has breakoff mod activated, STEP3 requires MAXCOMBO more or equal than 200000 and 40 Potions with a lifebar of 50% or less, STEP4 needs only survive until the end.

    Example: QuestConfig.ini

    Save the file, and test it in game to be sure its working.

    LUA Goal

    Creating a Quest Goal based on LUA could be difficulty, so you need to be careful of what are you doing here. if you are beginner we recommend you to start reading a manual from this language. LUA will help you IE to count Tap NoteSkins.
    First at all you should create a text file with whatever name but with a LUA extension (Quest_Goal.Lua) in the song folder. And you need to link this file into the SimFile (ssc) You can add it from the StepEditor on #FGChanges, or add it manually opening the ssc file.

    #FGChanges on Simfile, calling Quest_Goal.lua (should be located on Song Segment)

    Open Quest_Goal.lua and define an Actor Frame as a return, and insert GameplayFinishMessageCommand

    local t = Def.ActorFrame
    		local pnStageStats = STATSMAN:GetCurStageStats():GetPlayerStageStats(params.Player);
    return t

    This is a list of commands that will return a value, they are called from pnStageStats and after getting the values, you should set SetSuccess(true) command to make a MISSION SUCCESS otherwise it will get automatically MISSION FAILED.

    Command Result Description
    GetTapNoteScores("TapNoteScore") Get Total Score from specified TapNote (see table below)
    MaxCombo() Get Max Combo
    MaxMissCombo() Get Max Miss Combo
    MaxMissCombo() Get Max Miss Combo
    GetCurrentLife() Get Current Life value from LifeBar
    GetScore() Get Score
    GetGrade() Get Grade (see table below)
    GetScore() Get Score
    MaxComboSkin("NoteSkin Value") Get Max Combo from specified NoteSkin (see table below)
    MaxMissComboSkin("NoteSkin Value") Get Max Miss Combo from specified NoteSkin (see table below)
    GetTapNoteSkin("NoteSkin Value", "TapNoteScore") Get Max Miss Combo from specified NoteSkin (see table below)
    GetFailedAux() If user got LifeBar 0 or Stagebreak
    GetTapNoteScores() needs an specific tapnote value, this is the list available:

    TapNoteScore Value Description
    TapNoteScore_W1 Perfect Taps
    TapNoteScore_W2 Perfect Taps
    TapNoteScore_CheckpointHit Perfect Hold
    TapNoteScore_W3 Great Taps
    TapNoteScore_W4 Good Taps
    TapNoteScore_W5 Bad Taps
    TapNoteScore_Miss Miss Taps
    TapNoteScore_CheckpointMiss Miss Holds
    TapNoteScore_Heart Heart Taps
    TapNoteScore_Potion Potion Taps
    TapNoteScore_HitMine Mine Taps
    TapNoteScore_Velocity Velocity Item Taps
    TapNoteScore_Item Total Item Taps
    MaxComboSkin(), MaxMissComboSkin(), GetTapNoteSkin(,) needs an specific NoteSkin Value, this is the list available:

    • aadmb : Blue Drum NoteSkin
    • aadmr : Red Drum NoteSkin
    • aadmy : Yellow Drum NoteSkin
    • basic : Basic NoteSkin
    • canon : Canon NoteSkin
    • default : Prime NoteSkin
    • dog : Dog NoteSkin
    • drum : Drum NoteSkin
    • easy : Easy NoteSkin
    • fiesta : Fiesta NoteSkin
    • fiesta2 : Fiesta 2 NoteSkin
    • fire : Fire NoteSkin
    • flower : Flower NoteSkin
    • girl : Girl NoteSkin
    • horse : Horse NoteSkin
    • ice : Ice NoteSkin
    • infinity : Infinity NoteSkin
    • lightning : Lightning NoteSkin
    • missile : Missile NoteSkin
    • music : Music NoteSkin
    • nx : NX NoteSkin
    • nx2 : NX 2 NoteSkin
    • nxa : NX Absolute NoteSkin
    • old : Old NoteSkin
    • perfor1 : Perfomance 1 NoteSkin
    • perfor2 : Perfomance 2 NoteSkin
    • perfor3 : Perfomance 3 NoteSkin
    • poker : Poker NoteSkin
    • prime2 : Prime 2 NoteSkin
    • rebirth : Rebirth NoteSkin
    • sheep : Sheep NoteSkin
    • slime : Slime NoteSkin
    • soccer : Soccer Ball NoteSkin
    • wind : Wind NoteSkin
    • xx : XX Aniversary NoteSkin
    GetGrade() will return these values

    Grade Return Grade Description
    Grade_Tier1SSS Gold Grade
    Grade_Tier2SS Gold Grade
    Grade_Tier3S Gold Grade
    Grade_Tier4A Grade
    Grade_Tier5B Grade
    Grade_Tier6C Grade
    Grade_Tier7D Grade
    Grade_Tier8F Grade

    This is an example of Quest_Goal.lua.
    STEP1 requires that PERFECT + GOOD + MISS less or equal than 100, 10 Hearts, LifeBar at 15%, MaxComboSkin of NXA Tap more than 30 and No StageBreak.
    STEP2 requires 10 Bad Old Noteskin tapnotes, 250 Perfects from Basic NoteSkin but it can allow BreakOff.
    STEP3 requires more than 35 Mines pressed, Grade S or Better, Score more or equal than 20000.
    STEP4 Only need to survive until the end.

    Example: Quest_Goal.lua
    local t = Def.ActorFrame 
    		local pnStageStats = STATSMAN:GetCurStageStats():GetPlayerStageStats(params.Player);
    		local bFailedAux = pnStageStats:GetFailedAux();
    		local iPerfects = pnStageStats:GetTapNoteScores("TapNoteScore_W1") + 
    				pnStageStats:GetTapNoteScores("TapNoteScore_W2") +
    		local iGood = pnStageStats:GetTapNoteScores("TapNoteScore_W4");
    		local iMiss= pnStageStats:GetTapNoteScores('TapNoteScore_Miss') +
    		local iHearts = pnStageStats:GetTapNoteScores("TapNoteScore_Heart");	
    		local iNXAMaxCombo = pnStageStats:MaxComboSkin("nxa");
    		local iLifePercent = pnStageStats:GetCurrentLife();
    		if params.Label == "S1" then	-- STEP1
    			local TotalRequire = iPerfects + iGood + iMiss;
    			if not bFailedAux and TotalRequire <= 100 and iHearts == 10 and
    				iLifePercent == 15 and iNXAMaxCombo > 30 then
    		if params.Label == "S2" then	-- STEP2
    			local iBadOlds = pnStageStats:GetTapNoteSkin("old", 'TapNoteScore_W5');
    			local iBasicPerfects = pnStageStats:GetTapNoteSkin("basic", 'TapNoteScore_W1') +
    					pnStageStats:GetTapNoteSkin("basic", 'TapNoteScore_W2') +
    					pnStageStats:GetTapNoteSkin("basic", 'TapNoteScore_CheckpointHit');
    			if iBadOlds == 10 and iBasicPerfects == 250 then
    		if params.Label == "S3" then	-- STEP3
    			local Grade  = pnStageStats:GetGrade();
    			local iMines = pnStageStats:GetTapNoteScores("TapNoteScore_HitMine");
    			local iScore = pnStageStats:GetScore();
    			if iMines > 35 and iScore >= 20000 and not bFailedAux and
    				(Grade == Grade_Tier3 or Grade == Grade_Tier2 or Grade == Grade_Tier1) then
    		if params.Label == "S4" then	-- STEP4
    			if not bFailedAux then
    return t;

    Important about Quest_Goal.lua

    For GetTapNoteSkin(), "default" will be always the TapNote that you didn't set as noteskin on StepEditor. If you set 'prime2' as mod, then every default noteskin will be set with the prime2 noteskin.

    Online Service

    With this feature you will be able to play against your friends and upload your scores to our webpage. Currently there are some game/player modes available that you should be able to play using your discord account and a good network connection. Who ever wants create a lobby need to share the code on the top of the screen to his friend. Music Train, Progressive Mode, Random Train and Survival Mode are disabled while the lobby is created.

    Before using Online Service, you need:

    • A discord account.
    • A stable internet connection.
    • Discord installed and running while using PumpSanity.
    • Playing under XX Theme


    Before running the game, run discord and log in. Both users should have the same songpack/same song to play together, otherwise, you will get a warning message.

    • Create a lobby pressing the combination: CTRL + H.
    • Join a lobby pressing the combination: CTRL + J, type the code and press Enter.
    • Press M to change your team under Team vs Team PlayerMode.
    • Gamemodes: (can be only set by the Room owner. He needs to go into Channel Selection and select one)
      • High Score Battle: The winner is the one with the highest score.
      • Low Score Battle: The winner is the one with the lowest score, you will lose if your lifebar goes to zero.
      • High Combo Battle: The winner is the one with the highest combo.
      • Low Combo Battle: The winner is the one with the lowest combo, you will lose if your lifebar goes to zero.
      • Random Display Battle: Players will encounter random attacks while playing, the winner is the one with the highest score.
    • Playermodes:
      • One vs One: Up to 2 players. Both users can search for a song but they need to select the same to enter the gameplay. The user need to press SPACE or hold DownLeft+DownRight to search the selected enemy's song.
      • All vs All: Up to 4 players. The host is the only one who can pick a song, everyone else will enter the gameplay once he did. (If you don't have the same chart/song you will stay in select music)
      • Team vs Team: Up to 4 players, but they are splitted in 2 members per team (Blue/Red). The host is the only one who can pick a song, everyone else will enter the gameplay once he did. (If you don't have the same chart/song you will stay in select music)
    • Every user in the lobby will share their game title, Avatar, background user skin (USBSkin), Discord Username & UserID
    • Scores will be automatically uploaded to our webpage under High Score Battle & One vs One mode. Any other mode will not be uploaded.
    • Everyone in the lobby will be disconnected once the host leave it.
    • Every user should have the same song/chart/songpack, otherwise they will not enter the gameplay or a warning message will be shown.
    • Scores will be uploaded to our webpage if they are from Official SongPacks. Scores from custom SongPacks will be announced in our Discord Channel.
    • RankMode is disabled while playing any player mode. But you can upload your own score under RankMode/FullMode without creating lobby, by pressing F5 in Evaluation Screen (You need to have discord running previously).

    Good Practices

    In this section, we are giving some tips and some instructions to help users/stepmakers to create and improve their resources for new content and fan content.


    Image files should be fast to load and have a minimum size. Why? Imagine printing images on a really heavy paper? and then transporting those papers in a lot of small boxes.

    Song Banners

    • Song Banners images should be JPEG Format (JPG extension), with a 95% quality and a max resolution 640 width and 360 height, and minimal: 464 width and 264 height.
    • NEVER create images with odd dimensions, images with odd dimensions will always give warnings in game because they can't be re-escale adjusted properly. As you can see above, the dimensions given are always power of 2.
    • Banners song will not be re-used after creating it. And will be shown only 1 time (Select Music Screen). The game will also cache these images, so its unnecesary to create big-scale images like 1080p
    • Making song banners with these tips, will give you a compressed and small folder size for the song.
    • If you are using the same song banner file as a background song. Then we are going to the Background Section below.
    • Its not neccesary to use Photoshop or GIMP or any design/edit software. You can just use paint and set the dimensions.

    Song Background

    • Song Background images should be JPEG Format (JPG extension), with a 95% quality or more, with a max resolution of 1280 width and 720 height
    • You don't need a 4k image in this one. You need a good quality image that will be fast to load in game. The more big/heavy file, the more time it takes too load!
    • NEVER EVER create images with odd dimensions, images with odd dimensions will always give warnings in game because they can't be re-escale adjusted properly. Dimensions given are always power of 2.
    • If you want to use this image as a song banner too, just link it with the simfile. You will also save space in disk.

    Channel Banners

    This is a hard and complicated one, we have seen a lot of users using weird practices to create their channel banners

    • Channel Banners will be stored in memory, and they should not be 'large' 'heavy' files, otherwise, it will eat more memory than expected, causing crashes, slow loadings, etc.
    • We are using specific dimensions for different themes. For Channel banners we are trying to be really consistent to keep the aesthetic/style from the theme.
    • For XX Banner, we are looking for PNG Format File, with dimensions: 700 width and 406 height dimensions, the file should be called banner_xx . Here's a photoshop template
    • For Prime/Universal Banner, we are looking for PNG Format File, with dimensions: 500 width and 500 height dimensions or more, but it should be power of 2 and with locked dimensions, exm: 700x700-800x800, the file should be called banner . Here's a photoshop template
    • We will bring a new way to make banners more easy to handle


    Videos should have a minimum size too, and they are being seen dynamically one time only.

    Preview Videos

    • Preview Videos should be more or equal than 360p and less than 720p.
    • If previews videos are oversized with huge dimensions, the game will take more time to load and process them.
    • These videos should be 6-10 seconds maximum. More than 10 seconds is unnecesary. Remember that these videos are being shown one time only.
    • Using a good basic encoding (Or re-encoding) will also help compressing the file. So you can get a 500KB-1MB file, instead of 8MB-5MB file.
    • A song folder will have a really low size, saving space in disk.

    Using Handbrake, that can be downloaded here you can compress the video to get a lower size.

    1. Drag the video to Handbrake Interface.
    2. In Range section, you can choose Seconds or Frames, if you want to cut the video.
    3. Go Into Summary Tab, and choose MP4 as Format
    4. Go into Dimension tab, and set the Width and Height for the preview video. We recommend 576p. (Width: 1024, Height: 576). Adjust Cropping to 0.
    5. Go into Filters tab, and set: Detelecine off, Interlace as default, Deinterlace as Decomb with default preset, Denoise off, Sharpen off, Deblock off, Grayscale unchecked, Rotate 0, with Flip unchecked
    6. Go into Video tab, and for Framerate FPS, and use 24 fps. Remember, this is a preview video only. Quality: 20, Encoder preset: Slow, Fast Decode: checked, Encoder Profile: High, Encoder Level: 3.1
    7. Go into Audio tab, and if video has audio, delete it (Use the red mark). Remember that preview videos has no audio and are muted in game.
    8. Use the button 'Browse' to choose the save location. After this, press the button Start Encode
    9. Videos can be saved with 'mpg' extension (Even if they are mp4). Don't worry, you can also use MP4 extension, but attach the right filename and extension to the simfile

    SongMovie (BGA)

    • BGA or SongMovies could be more or equal than 720p but less or equal than 1080p.
    • If Songmovies videos are oversized with huge dimensions, the game will take more time to load and process them and will probably slow the gameplay.
    • Using a good basic encoding (Or re-encoding) will also help compressing the file, and gameplay could be improved due to CPU/GPU low usage.
    • You can use the mini handbrake tutorial above for songmovies too, but keep the framerate with 'same as source'
    • Don't attach a 8K BGA to final users, because probably some users don't have enough cpu/gpu power to reproduce them. Unless you give a warning, to delete/move them.