# TakoTako This is a mod for Taiko no Tatsujin: The Drum Master\ Currently has the features: - Auto sign-in into xbox - Skip splash screen - Skip DLC check screen - Allows custom official tracks or TJAs to be loaded into the game - Override songs names to a certain language than the default one - Allows use of the Hori Taiko Drum --- ## Supported Versions
Supported Versions

- Mono: 1.1.0.0 - 1.2.2.0

- Il2CPP: 1.3.0.0 - 1.9.0.0

---- ## Installation 1. Install the game via the xbox app to a directory of your choice 2. Download [BepInEx](https://builds.bepinex.dev/projects/bepinex_be). > If you're using a newer version of Taiko 1.3.0.0 or higher (you probably are) download the IL2CPP version `BepInEx_UnityIL2CPP_x64_XXXXX.zip`.If you're using a downgraded version of Taiko (1.2.2.0 on lower) download the "Mono" build, called something like `BepInEx_UnityMono_x64_XXXXX.zip`. > If you are upgrading from TakoTako v3.1.0 make sure you grab the latest BepInEx build as this mod requires the newest version (at the time of writing `#670 42a6727` is the latest build) 3. Go to where you installed your game, for example `C:\XboxGames\T Tablet\Content` 4. Paste all of the files from the .zip from step 5 into this folder (It will look something like this)\ ![](/readme-image-0.png) 5. We now need to give special permissions to the `BepInEx` folder. To do this, right click it, click on `Properties`, go to the `Security` tab, Click on the `Advanced` button, Click Change at the top, Under `Enter the object name to select` field type in your username and click `Check Names`. If the text doesn't become underscored that means you have entered the incorrect username. Then press `Ok` on that window to dismiss it. Going back to the `Advanced Security Settings Window` tick `Replace owner on subcontainers and objects` then finally press Apply. ![](/readme-image-1.png) 6. Run Taiko no Tatusjin The Drum Master once, then close it. This will generate some files 7. Look in your game's folder again, new files will have been generated under `.\BepInEx\plugins` 8. [Download my patch](https://github.com/Fluto/TaikoMods/releases). Once again download the IL2CPP version if you're on a newer version of Taiko, otherwise grab the Mono version. 9. Extract the `com.fluto.takotako` folder from the download in step 10 and paste it into the `.\BepInEx\plugins` folder\ ![](/readme-image-2.png) 10. And you're done! ## Configuration After installing the mod, and running the game it will generate files in `.\BepInEx\config`. Open `com.fluto.takotako.cfg` to configure this mod Here you can enable each individual feature or redirect where custom songs will be loaded from ## Custom Songs With this feature you can inject custom songs into the game! To begin place custom songs in `SongDirectory` specified in your configuration file, by default this is `%userprofile%/Documents/TakoTako/customSongs` Each song must have it's own directory with a unique name. These songs can be nested within folders. ### Updating tja2fumen tja2fumen is developed by [vivaria](https://github.com/vivaria) and may be updated over time. If there is a new update feel free to grab their latest version for their tja conversion program at https://github.com/vivaria/tja2fumen/releases/latest. After downloading the .exe file, place it in your `.\BepInEx\plugins\com.fluto.takotako` folder :) ### Structure The folder must have this structure: ``` Offical Songs -- [MUSIC_ID] ---- data.json (this contains the metadata for the track) ---- song_[MUSIC_ID].bin (this is a raw .acb music file, this is a CRIWARE format) ---- [MUSIC_ID]_e.bin (all of these items below are unencrypted Fumens, which formats how the song is played) ---- [MUSIC_ID]_e_1.bin ---- [MUSIC_ID]_e_2.bin ---- [MUSIC_ID]_h.bin ---- [MUSIC_ID]_h_1.bin ---- [MUSIC_ID]_h_2.bin ---- [MUSIC_ID]_m.bin ---- [MUSIC_ID]_m_1.bin ---- [MUSIC_ID]_m_2.bin ---- [MUSIC_ID]_n.bin ---- [MUSIC_ID]_n_1.bin ---- [MUSIC_ID]_n_2.bin ---- [MUSIC_ID]_x.bin ---- [MUSIC_ID]_x_1.bin ---- [MUSIC_ID]_x_2.bin TJA -- [MUSIC_ID] ---- [MUSIC_ID].tja ---- [MUSIC_ID].ogg or .wav Genre override e.g. this will override the songs to pop -- 01 Pop ---- [MUSIC_ID] ------ [MUSIC_ID].tja ------ song_[MUSIC_ID].ogg or .wav ``` ``` data.json Format { // Music Info int uniqueId; (This has to be a unique int, the mod will handle clashes, but it's best to generate a random int) string id; (This is the MUSIC_ID, this also has to be unique, because it's the same as the folder structure this file is in) int order; (default sorting order) int genreNo; (Genre enum [Pops 0, Anime 1, Vocalo 2, Variety 3, Children 4, Classic 5, Game 6, Namco 7]) bool branchEasy; (does this difficulty have a branch?, this will need to align with the fumen files) bool branchNormal; (does this difficulty have a branch?, this will need to align with the fumen files) bool branchHard; (does this difficulty have a branch?, this will need to align with the fumen files) bool branchMania; (does this difficulty have a branch?, this will need to align with the fumen files) bool branchUra; (does this difficulty have a branch?, this will need to align with the fumen files) int starEasy; (star difficulty) int starNormal; (star difficulty) int starHard; (star difficulty) int starMania; (star difficulty) int starUra; (star difficulty, set to 0 for unused) int shinutiEasy; int shinutiNormal; int shinutiHard; int shinutiMania; int shinutiUra; int shinutiEasyDuet; int shinutiNormalDuet; int shinutiHardDuet; int shinutiManiaDuet; int shinutiUraDuet; int scoreEasy; int scoreNormal; int scoreHard; int scoreMania; int scoreUra; bool areFilesGZipped; (are the music and fumen files gzipped? this saves file space and is done automatically when converting TJAs) // Song Info int previewPos; int fumenOffsetPos; // Text Info TextEntry songName; (Song Title - e.g. A Cruel Angel's Thesis) TextEntry songSubtitle; (Origin of the song - e.g. From \" Neon Genesis EVANGELION \") TextEntry songDetail; (Extra details for the track, sometimes used to say it's Japanese name - e.g. 残酷な天使のテーゼ) } TextEntry { string text; int font; (0 == Japanese, 1 == English, 2 == Traditional Chinese, 3 == Simplified Chinese, 4 == Korean) // Langauge overrides string jpText; (langauge override for 日本語 text) int jpFont; (langauge override for 日本語 text) string enText; (langauge override for English text) int enFont; (langauge override for English text) string frText; (langauge override for Français text) int frFont; (langauge override for Français text) string itText; (langauge override for Italiano text) int itFont; (langauge override for Italiano text) string deText; (langauge override for Deutsch text) int deFont; (langauge override for Deutsch text) string esText; (langauge override for Español text) int esFont; (langauge override for Español text) string tcText; (langauge override for 繁體中文 text) int tcFont; (langauge override for 繁體中文 text) string scText; (langauge override for 简体中文 text) int scFont; (langauge override for 简体中文 text) string krText; (langauge override for 영어 text) int krFont; (langauge override for 영어 text) } ``` ### TJA Format This project features encoding detection and should be able to handle both SHIFT-JIS and UTF-8 encoded TJAs. For extracting SHIFT-JIS (Japanese) format zip files, under windows you can use a program like bandizip which supports changing the codepage to Japanese. Under linux you can use something to this effect: `export LANG=ja_JP` followed by `7z x path/to/zip`. This will correct the mojibake (garbled file names) and ensure that the song file matches the `WAVE:` field in the provided TJA. --- ## Contributers (to add!) --- ## Credits - [SonicAudioTools](https://github.com/blueskythlikesclouds/SonicAudioTools) - [VGAudio](https://github.com/Thealexbarney/VGAudio) - [tja2fumen](https://github.com/vivaria/tja2fumen) Thank you vivaria for making an open source tja interpreter! - Pulsar#5356 for their previous work on TJA2BIN.exe ## Licensing Uses the following licensed libraries. - [SimpleHelpers.Net FileEncoding](https://github.com/khalidsalomao/SimpleHelpers.Net) (MIT License) - [UDE.CSharp](https://github.com/errepi/ude) (MPL 1.1, including GPL 2.0, and LGPL 2.1)