Viv
e856f302b7
Update README.md
2023-06-02 17:43:59 -04:00
Viv
5adcdd47d0
Update README.md
2023-06-02 17:43:59 -04:00
Viv
b4ab35a09a
Create README.md
2023-06-02 17:43:59 -04:00
Viv
1f3bf163b9
Attempt to handle remaining header bytes
2023-06-02 17:43:59 -04:00
Viv
62e4be1b81
parsers.py
: Add support for drumrolls/balloons
2023-06-02 17:43:59 -04:00
Viv
235448b4ab
parsers.py
: Account in-line comments after ,
...
Some charters don't follow the spec! >:V
2023-06-02 17:43:59 -04:00
Viv
4b194e5f71
parsers.py
: Account for blank header metadata
...
Some charters are too lazy to add scoreInit/scoreDiff/etc. values
2023-06-02 17:43:59 -04:00
Viv
0a3a4ae4e6
converters.py
: Fix bug with measure BPM adjustment
...
The adjustment occurs between ANY BPM shifts, and not just mid-measure BPM shifts.
The reason I missed this is because my test song, Rokuchounen, ONLY contains mid-measure BPM shifts, and no BPM shifts that start exactly on the measure.
2023-06-02 17:43:59 -04:00
Viv
f336c37b8b
parsers.py
: Move SECTION
to the branch function
2023-06-02 17:43:59 -04:00
Viv
555c92a8a5
Rename durationPadding
to duration
...
The two shouldn't have been split apart; we should have had a single name representing duration as a whole, whether or not it's present.
2023-06-02 17:43:59 -04:00
Viv
6345fe5437
constants.py
: Refactor TJA command lists
...
Some necessary commands were actually unnecessary, and some unused commands were actually used.
2023-06-02 17:43:59 -04:00
Viv
e3d2f0f039
Prepare for testing against Unlimited Games
2023-06-02 17:43:59 -04:00
Viv
c2739b322c
parsers.py
: Add cases for remaining ESE commands
2023-06-02 17:43:59 -04:00
Viv
b3968bc365
Remove TTBREAK
, TTROWBEAT
, and measureProperties
...
These are unnecessary; these commands are not included in the TJA spec.
2023-06-02 17:43:59 -04:00
Viv
1d3490c600
utils.py
: Add difficulty-based investigation notes
2023-06-02 17:43:59 -04:00
Viv
60fb3215d7
utils.py
: Pin down "Difficulty" header bytes
2023-06-02 17:43:59 -04:00
Viv
aadbb3f8ba
Add a sample "unknownHeader" to use in TJA conversions
...
This contains all of the dummy/padding text found through investigation, but none of the actual song-specific header metadata, so this will need to be updated further.
But, it's better than all 0s, and I want to test to see how TDMX responds to this.
2023-06-02 17:43:59 -04:00
Viv
ce99164583
utils.py
: Add function to validate unknown header bytes
2023-06-02 17:43:59 -04:00
Viv
35159ea793
tja2fumen.py
: Refactor main steps into main()
function
2023-06-02 17:43:59 -04:00
Viv
7239a00e76
converters.py
: Fixup handling of scoreInit/scoreDiff
2023-06-02 17:43:59 -04:00
Viv
c7170d6f23
converters.py
: Account for HIDDEN status
2023-06-02 17:43:59 -04:00
Viv
ec6bf1db68
converters.py
: Account for GOGOTIME events
...
Also add in cases for barline and other events
2023-06-02 17:43:59 -04:00
Viv
dcc37ff0dd
converters.py
: Make 'note' its own case
2023-06-02 17:43:59 -04:00
Viv
1f76b19e69
converters.py
: Remove redundant submeasures
object
2023-06-02 17:43:59 -04:00
Viv
fdeefc2499
converters.py
: Handle #SCROLL
events
2023-06-02 17:43:59 -04:00
Viv
ae84137478
converters.py
: Fix typo (PM -> BPM)
2023-06-02 17:43:59 -04:00
Viv
abd0af5f57
converters.py
: Migrate event code to other function
2023-06-02 17:43:59 -04:00
Viv
96ca4ab2c0
converters.py
: Move currentBranch
line to top of function
2023-06-02 17:43:58 -04:00
Viv
a6d9feab4c
converters.py
: Group fumenOffset
-related code
2023-06-02 17:43:58 -04:00
Viv
c17218d362
converters.py
: Add tana's fix for mid-measure BPM changes
2023-06-02 17:43:58 -04:00
Viv
c0288bb0b2
Commit in-progress work just to demo
...
This should be cleaned up into proper commits
2023-06-02 17:43:58 -04:00
Viv
89011c79db
readFumen()
: Comment out useless offset
value
...
This isn't actually used anywhere, and the calculation is often wrong.
2023-06-02 17:43:58 -04:00
Viv
cc885a0270
Refactor functions into individual modules
2023-06-02 17:43:58 -04:00
Viv
1b600fc26d
tja2fumen.py
: Fixup FumenStructure function
2023-06-02 17:43:58 -04:00
Viv
185ed46361
tja2fumen.py
: Add convertTJAToFumen
function
...
Thie is a first draft with many TODOs.
2023-06-02 17:43:58 -04:00
Viv
8b07fb77d0
parsetja.py
: Add applyFumenStructureToParsedTJA
function
...
This function basically just takes the output of the `getCourse`
function, and restructures it so that it more closely matches the
structure of the fumen `song` format.
2023-06-02 17:43:58 -04:00
Viv
06900237f6
parsetja.py
: Account for default balloon metadata
2023-06-02 17:43:58 -04:00
Viv
fdc3b6e1af
tja2fumen.py
: Switch to a measures
sub-dictionary
...
This makes the `song` object a lot easier to navigate when
inspecting variables through a debugger.
2023-06-02 17:43:58 -04:00
Viv
b7670b54a3
parsetja.py
: Slightly refactor the getCourse
function
...
The big if/elses were a little hard to parse, so I broke things
into subfunctions.
2023-06-02 17:43:58 -04:00
Viv
35ba7bfeba
parsetja.py
: Move parseLine
function down
...
My main focus will be rewriting the `getCourse` function, so I want it to be at the top.
2023-06-02 17:43:58 -04:00
Viv
355d3a10f9
parsetja.py
: Condense parseLine
function
2023-06-02 17:43:58 -04:00
Viv
f77f31dcd0
parsetja.py
: Condense global lists to save space
2023-06-02 17:43:58 -04:00
Viv
0cd8c93922
parsetja.py
: Simplify the parseTJA
function
...
No real functionality changes, just making the function simpler and easier to understand.
2023-06-02 17:43:58 -04:00
Viv
93dd1355f8
Add TJA parser (translated from JavaScript)
...
Source: https://github.com/WHMHammer/tja-tools/blob/master/src/js/parseTJA.js
2023-06-02 17:43:58 -04:00
Viv
8fa6295efa
tja2fumen.py
: Add TODOs for reverse engineering fumens
2023-06-02 17:43:58 -04:00
Viv
3b2111ae31
tja2fumen.py
: Fix assumption about drumroll padding bytes
...
The 8 bytes after a drumroll are NOT just padding, as
`fumen2osu.py` assumed. There is some kind of metadata here;
I just need to determine what it stands for.
2023-06-02 17:43:58 -04:00
Viv
0c95ff11f3
tja2fumen.py
: Account for additional unknown metadata
...
I'm not sure what these 4 bytes represent yet.
2023-06-02 17:43:58 -04:00
Viv
0995de89ae
tja2fumen.py
: Add function to validate rewritten fumens
2023-06-02 17:43:58 -04:00
Viv
9879cd9b7c
tja2fumen.py
: Rewrite song information to fumen files
...
On at least one song I've tested, this creates a perfect match,
meaning that we now have the ability to create a fumen file
from a "song" object.
The next challenge is reading TJA files into "song" objects.
2023-06-02 17:43:58 -04:00
Viv
adbc81a9c2
tja2fumen.py
: Store additional metadata in song
objects
...
The original `readFumen()` function ignored storing information
that was irrelevant for writing osu files.
Now, however, we store this information for the purposes of
*writing* valid fumen files.
Although much of this information is probably irrelevant, doing so
ensures that we can get a 1:1 match between input and output,
which builds a solid foundation for converting TJAs to fumens.
2023-06-02 17:43:58 -04:00