Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

Welcome to the Rhythm Heaven Groove Modding Docs! This resource contains info on the inner workings of Rhythm Heaven Groove. It can be used to study game functionality, or as reference to install or create your own mods.

Important

These docs are very early in devlopment. Information may be missing or potentially inaccurate, and will change over time as more about the game is learned and more tools are developed.

Caution

Command names are currently temporary, as there is no framework for cue modding. As that is developed, command names will be updated to reflect their usage in the cue modding tools.

If you’re interested in installing mods, check out the Installing Mods category.
If you’re interested in creating mods, check out the Creating Mods category.

Replacing Assets

Currently, with a few non-standard exceptions, the only mods available for Rhythm Heaven Groove are those that replace various assets in the game. These include text, graphics, audio, and tempo files. This guide will show how to install these mods to replace assets in your game.

Important

Right now, there is no proper modloader for Rhythm Heaven Groove. As such, this guide will use RomFS patching provided by Atmosphere or your emulator of choice. In the future, it will be updated with whatever system is developed.

File Structure

RomFS patching requires replaced files to be in exactly the same location as they would be in the original game. A proper folder structure is critical!

First, you’ll need a folder to tell Atmosphere or your emulator to load replaced assets for the game.
Rhythm Heaven Groove’s TitleID is 0100D9F01D474000.

If you are using a modded Switch:

  1. Create a folder titled 0100D9F01D474000 inside /atmosphere/contents/
  2. Create another folder inside of that titled romfs

If you are using an emulator:

  1. Find the mods folder for your game. You may be able to right-click the game in the list and select “Open Mods Location” or something similar.
    • Ensure that the folder’s name matches 0100D9F01D474000.
  2. Inside the folder, create a new folder titled the name of your mod. This can be anything!
  3. Inside the newly-created mod folder, create one last folder titled romfs.

Some emulators may have a feature to export the game’s RomFS folder structure. This can be very helpful!

  1. Right-click the game in the list and select “Dump RomFS” (or something similar)
  2. If it asks to choose which RomFS to dump, select “Program”
  3. Select “Skeleton” when it asks for the type of RomFS dump.
  4. After the dump completes, it should open in a new window.
  5. You can copy the dumped folders into the mod location you created earlier, inside the romfs folder.

These folders don’t contain any game assets, but they do contain the folder structure so you can easily put files into the right place!
If you’re not using an emulator, or your emulator does not have this functionality, you’ll just have to make the folders yourself.

Replacing Text (.msbt)

MSBT files are placed in romfs/mesg/, and organized by region and language.

RegionLanguageLocation
AmericaEnglishromfs/mesg/US/USen/
AmericaSpanishromfs/mesg/US/USes/
AmericaFrenchromfs/mesg/US/USfr/
EuropeEnglishromfs/mesg/EU/EUen/
EuropeSpanishromfs/mesg/EU/EUes/
EuropeFrenchromfs/mesg/EU/EUfr/
EuropeGermanromfs/mesg/EU/EUde/
EuropeItalianromfs/mesg/EU/EUit/
EuropeDutchromfs/mesg/EU/EUnl/
JapanJapaneseromfs/mesg/JP/JPja/
KoreaKoreanromfs/mesg/KR/KRko/
ChinaSimplified Chineseromfs/mesg/CN/CNzh/
TaiwanTraditional Chineseromfs/mesg/TW/TWzh/

Replacing Graphics (.tex and .spr)

Note

tex and spr files do a LOT and i really don’t want to cover every use and folder right now. i’ll do this later.
- zeo

Replacing Audio (.cwv)

Audio files are placed in romfs/sound/sm/.

TypeLocation
Minigame Musicromfs/sound/sm/showtime/
Tutorial Musicromfs/sound/sm/tutorial/
Prologue Musicromfs/sound/sm/prologue/
Menu Musicromfs/sound/sm/bgm/
Rating Jingles & Musicromfs/sound/sm/result/

SFX are stored in folders according to the menu/mingame/rhythm toy/use. Please see the RHG Modding Chart for all the minigame SFX folders.
For the other SFX folders, there’s too much to list here. Please wait for a proper list of the folders, ask the mod creator, or ask in the RHModding Discord server.

Replacing Tempo (.wmb)

Tempo files are placed in romfs/wavmark/.

TypeLocation
Tutorial Temporomfs/wavmark/stage/tutorial/
Rhythm Toy Temporomfs/wavmark/toy/
Soundboard Temporomfs/wavmark/toy/audio_tile/
Drum Lesson Temporomfs/wavmark/drumlesson/
Beatspell Temporomfs/wavmark/beatspell/
All Other Temporomfs/wavmark/stage/showtime/

Replacing Fonts (.zs)

Font files should be placed in romfs/mesg/Font/.

Tools & Resources

Below are tools and resources you can use to mod Rhythm Heaven Groove.

General

  • RHG Modding Chart: A spreadsheet detailing info about each minigame
  • RHModding Discord Server: The primary place for discussion & development of Rhythm Heaven mods for any game in the series. If you have any questions, we’d love to help!

Text

Audio

  • CWVTool: A command-line tool for decoding and encoding cwv audio files

Visuals

  • TEXTool: A command-line tool for decoding and encoding tex texture files

Custom Levels

  • Metronome: A command-line tool for creating and reading wavmark (wvb) tempo files

Getting Started

(This page seems to tell you how to get set up with mods. However, there is nothing to set up currently. You feel you should return later.)

Global Commands

These commands can be used in any scene.

Commands

FUN_7100514dc0(ticks) - Rest

Function address: 0x7100514dc0

Usage - to be added when tools are developed

Rest for a certain amount of ticks. 480 ticks = 1 beat.

ArgumentTypeDescription
ticksintThe number of ticks to rest for

FUN_71001366e0(ticks, opacity) - Fade Screen

Function address: 0x71001366e0

Usage - to be added when tools are developed

Fade the screen to opacity over ticks. Opacity ranges from 0 to 1.
Opacity 0 = black screen.

ArgumentTypeDescription
opacityfloatThe opacity of the gameplay
ticksintThe duration of the fade

FUN_71001399F0() - Initialize Subtitlebox

Function address: 0x71001399F0

Usage - to be added when tools are developed

Initialize the subtitlebox.

FUN_7100139A20() - Set Subtitlebox Text

Function address: 0x7100139A20

Usage - to be added when tools are developed

Sets the text inside the subtitlebox to the provided MSBT string.

FUN_7100139A30() - Force Show Subtitlebox

Function address: 0x7100139A30

Usage - to be added when tools are developed

Forces the subtitlebox to be shown, even when not running the level in a Video Example.

FUN_7100139A10() - Toggle Subtitlebox

Function address: 0x7100139A10

Usage - to be added when tools are developed

Shows/hides the subtitlebox.

Hoop Trundling (SceneRing)

Used in: Hoop Trundling, Remix 1, Remix 8, Hoop Trundling 2, Remix 9, Remix 19, Remix 20, Cast of Characters

Commands

FUN_7100217960(bubbleState) - Hoop

Function address: 0x7100217960

Usage - to be added when tools are developed

Standard hoop cue.

ArgumentTypeDescription
bubbleStateintA bitfield showing which trundlorbs should be bubbles as
the hoop passes by.
A bit of 0 indicates a bubble, to be silenced on the next cue.
The first bit corresponds to the first trundlorb, the second
bit is for the second trundlorb, and so on.

Sneezy Moon (SceneMoon)

Used in: Sneezy Moon, Remix 3, Sneezy Moon 2, Remix 8, Remix 19, Remix 20

Commands

FUN_71001db630(windup) - Green Sneeze

Function address: 0x71001db630

Usage - to be added when tools are developed

A green sneeze with or without a wind-up. The first wind-up sound effect is one beat after the command, and the input is four beats after the command. EEH-choo!

ArgumentTypeDescription
windupboolIf true, the sneeze will have two “eeh” sounds before “EEH-choo!”

FUN_71001dbbc0(windup) - Red Sneeze

Function address: 0x71001dbbc0

Usage - to be added when tools are developed

A red sneeze with or without a wind-up. The first wind-up sound effect is one beat after the command, and the input is 3.5 beats after the command. IHchoo!

ArgumentTypeDescription
windupboolIf true, the sneeze will have two “ih” sounds before “IHchoo!”

FUN_71001dc030() - Green Wind-up

Function address: 0x71001dc030

Usage - to be added when tools are developed

A standalone wind-up for a green sneeze consisting of two “eeh” sounds. The first sound effect is one beat after the command.

Can Do (SceneHammer)

Used in: Can Do, Remix 4, Remix 8, Can Do 2, Remix 13, Remix 17, Remix 19, Remix 20

Commands

FUN_71001ab410(landTicks, throw, hitTicks) - Red Can

Function address: 0x71001ab410

Usage - to be added when tools are developed

Spawns a red can.

ArgumentTypeDescription
landTicksintIf the can is thrown, the timing of the can landing.
- If this is positive, this is the ticks before the hit position.
- If this is negative, this is the ticks after the start of
the conveyor belt.
throwboolWhether the can should be thrown or not.
hitTicksboolHow many ticks from spawning until the can should be hit.

FUN_71001abcb0(landTicks, throw, hitTicks) - Blue Can

Function address: 0x71001abcb0

Usage - to be added when tools are developed

Spawns a blue can.

ArgumentTypeDescription
landTicksintIf the can is thrown, the timing of the can landing.
- If this is positive, this is the ticks before the hit position.
- If this is negative, this is the ticks after the start of
the conveyor belt.
throwboolWhether the can should be thrown or not.
hitTicksboolHow many ticks from spawning until the can should be hit.

Sweeper Star (SceneBrush)

Used in: Sweeper Star, Remix 6, Remix 8, Sweeper Star 2, Remix 10, Remix 19, Remix 20

Commands

FUN_710015a560(beats, playUn, fadeUn, countout) - Continuous Sweeping

Function address: 0x710015a560

Usage - to be added when tools are developed

Keep-the-beat sweeping for a given period, starting four beats after the command (with the first input being five beats after the command). Automatically plays the “Un, go!” count-in two beats after the command if this is the first time used in a level, or if a previous Continuous Sweeping command occured with a count-out.

ArgumentTypeDescription
beatsintThe number of beats to automatically sweep for after two beats.
Starts on a rest.
(“Un, go!” rest, sweep, rest, sweep, and so on…)
playUnboolToggles if the “un” sound should play on the rests while sweeping.
fadeUnboolToggles if the “un” sound effect should gradually fade out if
it was toggled on.
countoutboolToggles the “Three, two, one!” count-out.

FUN_710015ab00() - Triple Sweep

Function address: 0x710015ab00

Usage - to be added when tools are developed

A triple-sweep pattern. The first sound effect is 3.5 beats after the command, and the first input is five beats after the command.

FUN_710015af40(unknown) - Spin-Spin

Function address: 0x710015af40

Usage - to be added when tools are developed

A “Spin, spin!” pattern. This does not include stopping the spin! The first sound effect is two beats after the command, and the input is four beats after the command.

ArgumentTypeDescription
unknownboolUnknown functionality. Mostly is set to false.

FUN_710015b2e0() - Stop Spinning

Function address: 0x710015b2e0

Usage - to be added when tools are developed

The input to stop spinning, four beats after the command.

Soda Hop (SceneRope)

Used in: Soda Hop, Remix 10, Remix 13, Remix 19, Remix 20

Commands

FUN_7100226aa0(ticks, countout) - Jump

Function address: 0x7100226aa0

Usage - to be added when tools are developed

A single jump input. The input is four beats after the command. Automatically plays the “Jump, jump!” count-in two beats after the command if this is the first time used in a level, or if a previous Jump command occured with a count-out.

ArgumentTypeDescription
ticksintThe number of ticks that the jump animation lasts for. Always 480 in-game.
countoutboolToggles the “Three, two, one, stop!” count-out.

FUN_71002276a0(ticks, stopRope, cutCue) - Double-Under

Function address: 0x71002276a0

Usage - to be added when tools are developed

A double-under pattern. The first sound effect is two beats after the command, and the first input is four beats after the command.

ArgumentTypeDescription
ticksintThe number of ticks that the jump animation lasts for. Always 480 in-game.
stopRopeboolToggles if the rope should be stopped after the double-under or not.
cutCueboolToggles if the final voice line of the cue should be cut off.
Seemingly unused.

High-Five Fever (SceneClap)

Used in: High-Five Fever, Remix 12, High-Five Fever 2, Remix 15, Remix 17, Remix 20

Commands

FUN_71001646f0() - Count-In

Function address: 0x71001646f0

Usage - to be added when tools are developed

Plays the “One, two, three” count-in. The count-in starts four beats after the command.

FUN_7100164b70() - Count-Out

Function address: 0x7100164b70

Usage - to be added when tools are developed

Plays the “Three, two, one” count-out. The count-out starts four beats after the command.

FUN_71001632d0(type) - High-Five

Function address: 0x71001632d0

Usage - to be added when tools are developed

A single high-five input. The input is four beats after the command.

ArgumentTypeDescription
typeintThe type of high-five animation and sound. 0 is a regular high-five,
1 is a double high-five, and 2 is a triple high-five.
A regular high-five should only use a value of 0.

FUN_71001634d0() - Pre-Double High-Five

Function address: 0x71001634d0

Usage - to be added when tools are developed

A high-five input that goes before a double high-five. The input is four beats after the command.

FUN_7100163b30() - Double High-Five

Function address: 0x7100163b30

Usage - to be added when tools are developed

A double high-five pattern. It requires a Pre-Double High-Five command before. The first sound effect is 2.5 beats after the command, and the first input is four beats after the command. Check it out!

FUN_71001634f0() - Pre-Triple High-Five

Function address: 0x71001634f0

Usage - to be added when tools are developed

A high-five input that goes before a triple high-five. The input is four beats after the command.

FUN_71001642F0() - Triple High-Five

Function address: 0x71001642F0

Usage - to be added when tools are developed

A triple high-five pattern. It requires a Pre-Tripled High-Five command before. The first sound effect is one beat after the command, and the first input is 3.5 beats after the command. Here we go!

Germ Aerobics (SceneBacteria)

Used in: Germ Aerobics, Remix 13, Germ Aerobics 2, Remix 15, Remix 18, Remix 20

Commands

FUN_7100146120(beats, countin) - Aerobics

Function address: 0x7100146120

Usage - to be added when tools are developed

Standard aerobics for a specified number of beats. The count-in starts three beats after the command, and the first input is five beats after the command.

ArgumentTypeDescription
beatsintThe number of beats that the aerobics should last.
countinboolToggles if the “Ou-kay!” count-in should play.

FUN_7100146b50(beats, countin) - Slow Aerobics

Function address: 0x7100146b50

Usage - to be added when tools are developed

Slow aerobics for a specified number of beats. The count-in starts one beat after the command, and the first input is six beats after the command.

ArgumentTypeDescription
beatsintThe number of beats that the aerobics should last.
countinboolToggles if the count-in for slow aerobics should play.

FUN_7100147cd0() - Triple Aerobics

Function address: 0x7100147cd0

Usage - to be added when tools are developed

A triple aerobics cue. The cue starts three beats after the command, and the first input is five beats after the command.

FUN_71001473a0(unknown) - Stop Aerobics

Function address: 0x71001473a0

Usage - to be added when tools are developed

The cue to stop aerobics, including a final input. The cue starts two beats after the command, and the input is five beats after the command.

ArgumentTypeDescription
unknownintUnknown functionality.