1
0
mirror of synced 2024-11-27 22:40:49 +01:00
tja2fumen/README.md
2023-06-02 17:43:59 -04:00

43 lines
3.0 KiB
Markdown

# tja2fumen
This repo a new attempt to write a tja2fumen chart converter to replace/complement the existing [tja2bin.exe](https://github.com/Fluto/TakoTako/blob/c269bcab60530877a16c2a473c84796b94d0a5ce/README.md?plain=1#L181) converter.
### Goals
- [X] Fix desyncronization issues due to BPMCHANGE commands. (See: https://github.com/Fluto/TakoTako/issues/16)
- [X] Provide open source code, as opposed to distributing only a closed-source binary.
- [ ] Provide a highly-documented reference for parsing both the TJA and Fumen file formats.
- [ ] Stick to "pure Python", i.e. no external dependencies if possible.
- [ ] Provide support for Windows/Linux/macOS via [`PyInstaller`](https://pyinstaller.org/en/stable/) or something similar.
### Usage
The converter is in a messy/experimental state, and is not yet fit for use due to lack of support for important TJA commands.
### Future work
> **Note**: Simulator-specific commands (such as those used for Dan-i Dojo charts) are unlikely to be supported, due to the lack of support from official console releases.
* Bugfixes
- [ ] Fix issue with BPMCHANGE + drumrolls. (Affected songs: Kokuryu, R.I.P. Hero, Challengers, etc.)
- [ ] Properly handle the offset at the beginning of the song (Affected songs: SUPERNOVA, etc.)
- [ ] Handle `areFilesGZipped=False` issue when combining charts with `TakoTako`/`tja2bin.exe` files (Affected songs: Aragami, MEGALOVANIA, exTora Trap!!).
* Missing command support
- [ ] Support for branch commands (`#BRANCHSTART`, `#BRANCHEND`, `#N`, `#E`, `#M`, `#LEVELHOLD`, etc.)
- [ ] Support for barline manipulation commands (`#BARLINEON`, `#BARLINEOFF`)
- [ ] Support for delay commands (`#DELAY`)
- [ ] Support for P1/P2 charts (`#STYLE: Single`, `#STYLE: Double`, `#START P1`, `START P2`)
* Project architecture
- [ ] Refactoring into a more Pythonic style (variable names (`camelCase` -> `under_score`), object-oriented note/branch/measure representations, etc.)
- [ ] Argument parsing + proper i/o handling
- [ ] Packaging into an executable
Once these features are added, I will create an initial release. Until then, the source code in this repo is presented as-is.
### Attribution
- The fumen-parsing code in this project is based off of a modified copy of the [`readFumen()`](https://github.com/KatieFrogs/fumen-tools/blob/6ff3a2f7f53687f3dd49c5c57fcfc5ccbe3e5a10/fumen2osu/fumen2osu.py#L7-L152) function from the [`fumen2osu.py`](https://github.com/KatieFrogs/fumen-tools/blob/main/fumen2osu/fumen2osu.py) found in @KatieFrogs' [`fumen-tools`](https://github.com/KatieFrogs/fumen-tools) project.
- The TJA-parsing code in this project is a Python translation of the [`parseTJA.js`](https://github.com/WHMHammer/tja-tools/blob/master/src/js/parseTJA.js) file from @WHMHammer's [`tja-tools`](https://github.com/WHMHammer/tja-tools).
> **Note**: To be explicily clear, neither @KatieFrogs nor @WHMHammer have endorsed this project, are affiliated with this project, or have made any direct contributions to this project. I have just modified their existing work.