diff --git a/pyproject.toml b/pyproject.toml index 1dd6275..5e07800 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,5 +42,7 @@ disable = """ too-many-branches, too-many-arguments, too-many-locals, - too-many-statements + too-many-statements, + too-many-positional-arguments, + fixme """ diff --git a/src/tja2fumen/converters.py b/src/tja2fumen/converters.py index 247c02f..5d04300 100644 --- a/src/tja2fumen/converters.py +++ b/src/tja2fumen/converters.py @@ -195,6 +195,9 @@ def convert_tja_to_fumen(tja: TJACourse) -> FumenCourse: len(b) for b in tja_branches_processed.values() )) + # Use a single copy of the course balloons (since we use .pop()) + course_balloons = tja.balloon.copy() + # Iterate through the different branches in the TJA total_notes = {'normal': 0, 'professional': 0, 'master': 0} for current_branch, branch_tja in tja_branches_processed.items(): @@ -209,7 +212,6 @@ def convert_tja_to_fumen(tja: TJACourse) -> FumenCourse: current_levelhold = False branch_types: List[str] = [] branch_conditions: List[Tuple[float, float]] = [] - course_balloons = tja.balloon.copy() # Iterate over pairs of TJA and Fumen measures for idx_m, (measure_tja, measure_fumen) in \ diff --git a/src/tja2fumen/parsers.py b/src/tja2fumen/parsers.py index e04ff1e..a2b9e5f 100644 --- a/src/tja2fumen/parsers.py +++ b/src/tja2fumen/parsers.py @@ -33,7 +33,9 @@ def parse_tja(fname_tja: str) -> TJASong: tja_lines = [line for line in tja_text.splitlines() if line.strip() != ''] tja = split_tja_lines_into_courses(tja_lines) for course in tja.courses.values(): - course.branches = parse_tja_course_data(course.data) + branches, balloon_data = parse_tja_course_data(course.data) + course.branches = branches + course.balloon = fix_balloon_field(course.balloon, balloon_data) return tja @@ -181,7 +183,8 @@ def split_tja_lines_into_courses(lines: List[str]) -> TJASong: return parsed_tja -def parse_tja_course_data(data: List[str]) -> Dict[str, List[TJAMeasure]]: +def parse_tja_course_data(data: List[str]) \ + -> Tuple[Dict[str, List[TJAMeasure]], Dict[str, List[str]]]: """ Parse course data (notes, commands) into a nested song structure. @@ -208,6 +211,8 @@ def parse_tja_course_data(data: List[str]) -> Dict[str, List[TJAMeasure]]: has_branches = bool([d for d in data if d.startswith('#BRANCH')]) current_branch = 'all' if has_branches else 'normal' branch_condition = '' + # keep track of balloons in order to fix the 'BALLOON' field value + balloons: Dict[str, List[str]] = {k: [] for k in BRANCH_NAMES} # Process course lines idx_m = 0 @@ -225,6 +230,7 @@ def parse_tja_course_data(data: List[str]) -> Dict[str, List[TJAMeasure]]: # 1. Parse measure notes if note_data: + notes_to_write: str = "" # If measure has ended, then add notes to the current measure, # then start a new measure by incrementing idx_m if note_data.endswith(','): @@ -232,14 +238,26 @@ def parse_tja_course_data(data: List[str]) -> Dict[str, List[TJAMeasure]]: else [current_branch]): check_branch_length(parsed_branches, branch_name, expected_len=idx_m+1) - parsed_branches[branch_name][idx_m].notes += note_data[:-1] + notes_to_write = note_data[:-1] + parsed_branches[branch_name][idx_m].notes += notes_to_write parsed_branches[branch_name].append(TJAMeasure()) idx_m += 1 # Otherwise, keep adding notes to the current measure ('idx_m') else: for branch_name in (BRANCH_NAMES if current_branch == 'all' else [current_branch]): - parsed_branches[branch_name][idx_m].notes += note_data + notes_to_write = note_data + parsed_branches[branch_name][idx_m].notes += notes_to_write + + # Keep track of balloon notes that were added + balloon_notes = [n for n in notes_to_write if n in ['7', '9']] + # mark balloon notes as duplicates if necessary. this will be used + # to fix the BALLOON: field to account for duplicated balloons. + balloon_notes = (['DUPE'] * len(balloon_notes) + if current_branch == 'all' else balloon_notes) + for branch_name in (BRANCH_NAMES if current_branch == 'all' + else [current_branch]): + balloons[branch_name].extend(balloon_notes) # 2. Parse measure commands that produce an "event" elif command in ['GOGOSTART', 'GOGOEND', 'BARLINEON', 'BARLINEOFF', @@ -381,7 +399,7 @@ def parse_tja_course_data(data: List[str]) -> Dict[str, List[TJAMeasure]]: "have in each branch.)" ) - return parsed_branches + return parsed_branches, balloons def check_branch_length(parsed_branches: Dict[str, List[TJAMeasure]], @@ -425,6 +443,116 @@ def check_branch_length(parsed_branches: Dict[str, List[TJAMeasure]], ) +def fix_balloon_field(balloon_field: List[int], + balloon_data: Dict[str, List[str]]) -> List[int]: + """ + Fix the 'BALLOON:' metadata field for certain branching songs. + + In Taiko, branching songs may have a different amount of balloons and/or + different balloon values on their normal/professional/master branches. + However, the TJA field "BALLOON:" is limited it how it can represent + balloon hits; it uses a single comma-delimited list of integers. E.g.: + + BALLOON: 13,4,52,4,52,4,52 + + It is unclear which of these values belong to which branches. + + This is especially unclear for songs that start out on the "normal" branch, + or songs that have branching conditions that force a specific branch. These + songs are often written as TJA with only a single branch written out, yet + for official fumens, this branch information actually has to be present on + *all three branches*. So, the 'BALLOON:' field will be missing values. + + In the example above, the "13" balloon actually occurs on the normal branch + before the first branch condition. Meaning that the balloons are split up + like this: + + BALLOON: (13,4,52)(4,52)(4,52) + + However, due to fumen requirements, we want the balloons to actually be + like this: + + BALLOON: (13,4,52)(13,4,52)(13,4,52) + + So, the purpose of this function is to "fix" the balloon information so + that it can be used for fumen conversion without error. + + NOTE: This fix probably only applies to a VERY small minority of songs. + One example (shown above) is the Ura chart for Roppon no Bara to Sai + no Uta. You can see in the wikiwiki that the opening 'Normal' + section has a balloon note prior to the branch condition. We need + to duplicate this value across all branches. + """ + # Return early if course doesn't have branches + if not all(balloon_data.values()): + return balloon_field + + # Special case: Courses where the # of balloons is the same for all + # branches, and the TJA author only listed 1 set of balloons. + # Fix: Duplicate the balloons 3 times. + if all(len(balloons) == len(balloon_field) + for balloons in balloon_data.values()): + return balloon_field * 3 + + # Return early if there were no duplicated balloons in the course + if not any('DUPE' in balloons for balloons in balloon_data.values()): + return balloon_field + + # If balloons were duplicated, then we expect the BALLOON: field to have + # fewer hits values than the number of balloons. If this *isn't* the case, + # then perhaps the TJA author duplicated the balloon hits themselves, and + # so we don't want to make any unnecessary edits. Thus, return early. + # FIXME: This assumption fails for double-kusudama notes, where we may + # see a "fake" balloon, thus inflating the total number of balloons. + # But, this is such a rare case (double-kusudama + duplicated + # balloons + 'BALLOON:' field with implicitly duplicated hits) that + # I'm alright handling it incorrectly. If a user files a bug + # report, then I'll fix it then. + total_num_balloons = sum(len(b) for b in balloon_data.values()) + if not len(balloon_field) < total_num_balloons: + return balloon_field + + # OK! So, by this point in the function, we're making these assumptions: + # + # 1. The TJA chart has branches. + # 2. The TJA author wrote part of the song for only a single branch + # (e.g. the Normal branch, before the first branch condition), and thus + # we needed to duplicate some of the note data to create a valid fumen. + # 3. The 'single branch' part of the TJA contained balloon/kusudama notes, + # and thus we needed to duplicate those notes. + # 4. The TJA author wrote the 'BALLOON:' field such that there was only 1 + # balloon value for the duplicated balloon note. + # + # The goal now is to identify which balloons were duplicated, and make sure + # the "hits" value is present across all branches. + duplicated_balloons = [] + balloon_field_fixed = [] + + # Handle the normal branch first + # If balloons are duplicated, then it's probably going to be from 'normal' + # FIXME: If the balloons are duplicated from the master/professional branch + # (e.g. due to a forced branch change from a branch condition), then + # this logic will read the balloon values incorrectly. + # But, this is such a rare case that I'm alright handling it + # incorrectly. If a user files a bug report, then I'll fix it then. + for balloon_note in balloon_data['normal']: + balloon_hits = balloon_field.pop(0) + if balloon_note == 'DUPE': + duplicated_balloons.append(balloon_hits) + balloon_field_fixed.append(balloon_hits) + + # Repeat any duplicated balloon notes for the professional/master branches + for branch_name in ['professional', 'master']: + dupes_to_copy = duplicated_balloons.copy() + for balloon_note in balloon_data[branch_name]: + if balloon_note == 'DUPE': + balloon_field_fixed.append(dupes_to_copy.pop(0)) + else: + balloon_field_fixed.append(balloon_field.pop(0)) + + return balloon_field_fixed + + ############################################################################### # Fumen-parsing functions # ############################################################################### diff --git a/testing/data/emma.tja b/testing/data/emma.tja new file mode 100644 index 0000000..4810e5f --- /dev/null +++ b/testing/data/emma.tja @@ -0,0 +1,1526 @@ +BPM:333 +OFFSET:-1.612000023468295 + +COURSE:Edit +LEVEL:10 +BALLOON:50,30,50,30,50,4,30 + + +#START +#BARLINEOFF +#MEASURE 5/4 +500000000000000000000000000000000000000000000008 +00000000000, +#BARLINEON +#MEASURE 4/4 +300000000000000000000000200000000000000000000000, +#BRANCHSTART r,10,16 +#N +#BARLINEOFF +200000000000000000000000200000000000000000000000, +#BARLINEON +#MEASURE 8/4 +200000000000000000000000000000000000200000000000 +000000000000000000000000200000000000200000200000, +200000002000000020000000200000002000000020000000 +200000002000000020000000200000002000000020000000, +100000000000200000200000200000000000200000200000 +100000200000100000200000100000200000100000000000, +#GOGOSTART +400000000000100000400000000000100000400000000000 +100000400000000000100000400000000000400000000000, +#GOGOEND +000000000000000000000000300000000000000000000000 +000000000000000000000000200000200000200000200000, +100000000000000000000000000000000000100000100000 +200000000000000000200000000000000000200000000000, +#GOGOSTART +300000000000000000300000000000000000300000000000 +000000300000000000000000300000000000400000000000, +100000100000100000100000100000100000100000100000 +100000100000100000100000100000100000100000100000, +#GOGOEND +300000000000000000000000200000000000000000000000 +200000000000000000000000200000000000200000000000, +000000000000200000000000000000000000200000000000 +000000000000200000000000000000000000000000000000, +#GOGOSTART +100000100000100000100000100000100000100000100000 +200000100000100000100000100000100000200000100000, +100000100000100000100000100000100000100000100000 +200000100000100000200000100000100000200000100000, +#GOGOEND +300000000000000000000000200000000000000000000000 +200000000000000000000000200000000000200000000000, +000000000000200000000000000000000000200000000000 +000000000000200000000000000000000000000000000000, +#GOGOSTART +100000000000000000000000100000000000100000000000 +200000000000100000000000100000000000100000000000, +100000100000100000100000100000100000100000100000 +200000100000200000100000200000100000200000200000, +#GOGOEND +100000100000200000000000100000100000200000100000 +000000100000200000000000100000100000200000100000, +100000100000200000000000100000100000200000100000 +000000100000200000000000100000200000200000200000, +100000100000200000000000100000100000200000100000 +000000100000200000000000100000100000200000100000, +100000100000200000000000100000100000000000100000 +200000200000200000200000100000100000100000100000, +100000000000400000200000000000100000200000000000 +100000200000000000100000200000000000100000200000, +000000100000200000000000100000200000000000100000 +200000000000100000100000200000200000200000200000, +100000000000100000100000200000000000200000200000 +100000000000100000100000200000000000200000200000, +100000000000100000100000200000000000200000200000 +100000100000100000100000200000200000200000200000, +#MEASURE 6/4 +100000000000000000100000200000000000100000000000 +000000100000200000000000, +#MEASURE 8/4 +100000000000000000100000200000000000100000000000 +100000100000200000000000100000000000200000200000, +#MEASURE 6/4 +100000000000000000100000200000000000100000000000 +000000100000200000000000, +#MEASURE 8/4 +100000000000000000100000000000200000100000200000 +100000000000200000200000100000100000200000200000, +#MEASURE 6/4 +000000000000000000100000200000000000100000000000 +000000001000000020000000, +#MEASURE 8/4 +200000000000000020000000000000002000000000000000 +200000000000000000200000100000100000200000000000, +#MEASURE 6/4 +100000100000200000100000200000000000200000000000 +100000100000200000100000, +#MEASURE 8/4 +200000000000000000000000200000000000000000000000 +100000000000000000100000200000000000100000000000, +300000000000000000100000200000000000100000100000 +100000100000100000000000200000000000100000100000, +100000100000100000100000200000000000100000100000 +200000000000100000000000200000100000100000100000, +100000000000100000100000200000000000100000100000 +100000100000000000100000200000000000100000000000, +100000100000100000100000200000000000100000100000 +200000100000100000100000200000000000100000100000, +300000000000100000000000200000000000100000100000 +100000000000100000000000200000000000100000000000, +100000000000100000000000200000000000100000000000 +200000000000100000100000200000000000100000000000, +100000100000100000100000100000100000100000100000 +200000100000100000100000100000100000100000100000, +500000000000000000000000000000000000000008000000 +600000000000000000000000000000000000000008000000, +#MEASURE 4/4 +#BPMCHANGE 166.5 +#SCROLL 0.75 +100000000000000000000000200000000000200000000000, +200000000000200000200000100000000200000200200000, +100000100100200000200000100000000000200000200200, +100000001000100010000000200000001000100010001000 +2000200020002000, +100000100000200000000000200000100200100200100000, +100000000200200000200200100000000000100100200000, +100020002000200020002000100000000000200000100200, +100000002000200020002000200000001000000010001000 +2000200020002000, +#MEASURE 8/4 +#BPMCHANGE 333 +#SCROLL 0.5 +100000000000000000000000200000000000100000000000 +200000000000000000000000100000000000100000000000, +000000000000100000000000200000000000000000100000 +200000000000000000000000000000000000200000000000, +000000000000000000000000200000000000000000100000 +200000000000100000000000000000000000000000000000, +100000000000000000100000200000000000100000100000 +200000000000000000000000200000000000100000100000, +#SCROLL 0.53 +100000000000000000000000200000000000100000000000 +200000000000000000000000100000000000100000100000, +#SCROLL 0.58 +100000000000000000000000200000000000100000000000 +200000000000000000000000100000000000200000000000, +#SCROLL 0.63 +100000000000100000000000200000000000100000000000 +200000000000100000000000100000100000200000000000, +#SCROLL 0.68 +100000100000100000200000100000000000200000000000 +100000100000100000200000100000000000200000000000, +#SCROLL 0.75 +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#SCROLL 1 +800000000000000000000000200000000000000000000000 +200000000000100010001000400000000000000000000000, +#GOGOSTART +300000000000000000200000100000000000200000000000 +200000200000100000100000200000100000200000000000, +100000100000200000200000100000100000200000200000 +100000000000200000100000200000100000200000000000, +100000000000000000200000100000000000200000000000 +200000000000000000200000100000000000200000000000, +200000000000100010001000200000000000100000000000 +200000100000100000100000200000000000000000000000, +500000000000000000000000000000000000000000000008 +000000000000000000000000200000100000200000000000, +200000100000100000200000100000100000200000100000 +200000000000200000000000200000200000100000100000, +200000000000100000200000100000100000200000000000 +100000100000200000200000200000100000100000100000, +200000000000100000100000200000200000100000100000 +200000200000200000200000100000100000100000100000, +#GOGOEND +200000000000000000200000000000000000200000000000 +300000000000200000300000200000000000300000000000, +200000200000200000200000 +#GOGOSTART +100000100000200000200000 +100000000000200000100000200000100000200000000000, +100000000000000000400000000000000000100000000000 +200000000000100000400000000000000000100000000000, +200000000000100010001000200000000000100000000000 +200000100000100000100000200000000000100000000000, +500000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000008, +000000000000000000000000200000000000100000100000 +200000000000100000100000200000000000100000000000, +100000100000100000200000100000000000200000200000 +100000100000100000200000100000000000200000200000, +100000100000200000200000100000000200000000200000 +100000100000200000200000100000100000100000100000, +200000000000000000000000200000000000000000000000 +400000000000000000100000400000000000100000000000, +200000200000100000100000200000200000100000100000 +200000100000200000100000200000100000200000100000, +#GOGOEND +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000200000000000200000200000, +200000002000000020000000200000002000000020000000 +200000002000000020000000200000002000000020000000, +100000000000200000200000200000000000200000200000 +100000200000100000200000100000200000100000000000, +#GOGOSTART +200000000000100000100000100000100000200000000000 +100000100000100000100000100000100000200000000000, +100000100000200000100000100000200000100000100000 +200000100000200000100000200000100000200000200000, +#GOGOEND +100000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#MEASURE 4/4 +000000000000000000000000000000000000000000000000, +#E +#BARLINEOFF +200000000000000000000000200000000000000000000000, +#BARLINEON +#MEASURE 8/4 +200000000000000000000000000000000000200000000000 +000000000000000000000000200000200000200000200000, +200000002000000020000000200000002000000020000000 +200000002000000020000000200000002000000020000000, +100000200000200000200000200000200000200000200000 +100000200000100000200000100000200000100100100000, +#GOGOSTART +400000000000100000400000000000100000400000200000 +100000400000200000100000400000000000400000000000, +#GOGOEND +000000000000200000200000300000200000200000200000 +100000100000100000100000200000200000200000200000, +100000000000000000000000000000000000100000100000 +200000000000000000200000000000000000200000000000, +#GOGOSTART +300000000000000000300000000000000000300000000000 +000000300000000000000000300000000000400000000000, +100000100000100000200000100000100000200000100000 +100000200000100000100000200000100000100100100100, +#GOGOEND +100000000000000000000000200000000000000000000000 +200000000000000000000000200000000000200000000000, +000000000000200000000000000000000000200000000000 +000000000000200000000000000000000000000000000000, +#GOGOSTART +100000100000100000100000100000100000100000100000 +200000100000100000100000100000100000100100100000, +100000100000100000100000100000100000100000100000 +200000100000100000200000100000100000100100100000, +#GOGOEND +300000000000000000000000200000000000000000000000 +200000000000000000000000200000000000200000000000, +000000000000200000000000000000000000200000000000 +000000000000200000000000000000000000000000000000, +#GOGOSTART +100000000000000000000000100000000000100000000000 +200000000000100000000000100000000000100000000000, +100000100000100000100000100000100000100000100000 +200000100000200000100000100100100000100100100000, +#GOGOEND +100000100000200000200000100000100000200000100000 +100000100000200000200000100000100000200000100000, +100000100000200000200000100000100000200000100000 +100000100000200000200000100000200000200000100000, +100000100000200000200000100000100000200000100000 +100000100000200000200000100000100000200000100000, +100000100000200000200000100000100000200000100000 +200000100000200000100000200000100000200000200000, +100000000000400000200000100000100000200000100000 +100000200000100000100000200000100000100000200000, +100000100000200000100000100000200000100000100000 +200000100000200000200000100000100000200000200000, +100000100000100000100000200000200000200000200000 +100000100000100000100000200000200000200000200000, +100000100000200000200000100000100000200000200000 +100100100000100000100000100100100000100000100000, +#MEASURE 6/4 +100000000000000000100000200000000000100000000000 +200000100000200000000000, +#MEASURE 8/4 +100000000000000000100000200000000000100000000000 +100000100000200000000000100000000000100100100000, +#MEASURE 6/4 +100000000000000000100000200000000000100000000000 +200000100000200000000000, +#MEASURE 8/4 +100000000000000000100000000000200000100000200000 +100000000000200000100000200000200000100000200000, +#MEASURE 6/4 +000000000000000000100100200000000000100000000000 +000000001000000020000000, +#MEASURE 8/4 +200000000000000020000000000000002000000000000000 +200000000000000000200000100000100000200000200000, +#MEASURE 6/4 +100000100000200000100000200000000000200000100000 +100000100000200000100000, +#MEASURE 8/4 +200000000000000000000000200000000000000000000000 +100000000000000000100000200000000000100000000000, +300000000000000000100000200000000000100000100000 +100000100000100000000000200000000000100000100000, +100000100000100000100000200000000000100000100000 +200000100000100000000000200000100000100000100000, +100000000000100000100000200000000000100000100000 +100000100000100000100000200000000000100000100000, +100000100000100000100000200000100000100000100000 +200000100000100000100000200000100000100000100000, +300000000000100000100000200000000000100000100000 +100000000000100000100000200000000000100000100000, +100000000000100000000000200000100000100000000000 +200000100000100000100000200000000000100000000000, +100000100000100000100000100000100000100000100000 +200000100000100000100000100000100000100000100000, +500000000000000000000000000000000000000008000000 +600000000000000000000000000000000000000008000000, +#MEASURE 4/4 +#BPMCHANGE 166.5 +#SCROLL 0.75 +100000000000000000000000202000000000202000000000, +202000000000202000202000100000000200000200200000, +100000100100200000200000100000200000101010101010, +100000002000200010002000200000001000200020002000 +1010100020002000, +100000100000202000000000202000100200100200100000, +100000000200100200200200100000100000200200100200, +100020002000200020202000100000000000202000100200, +100000002000200020001000200020001000000010001000 +1010100010001000, +#MEASURE 8/4 +#BPMCHANGE 333 +#SCROLL 0.5 +100000000000000000000000200000000000100000100000 +200000000000000000000000100000000000100000100000, +000000000000100000000000200000100000000000100000 +200000000000000000100000000000000000200000200000, +000000000000000000000000200000000000000000100000 +200000000000100000000000000000000000000000000000, +100000000000000000100000200000000000100000100000 +200000100000000000200000200000000000100100100000, +#SCROLL 0.53 +100000000000000000000000200000000000100000100000 +200000000000000000000000100000000000100000100000, +#SCROLL 0.58 +100000000000000000000000200000000000100000100000 +200000000000100000100000100000000000200000000000, +#SCROLL 0.63 +100000000000100000000000200000000000100000100000 +200000000000100000000000100000100000200000200000, +#SCROLL 0.68 +100100100000100000200000100000100000200000200000 +100100100000100000200000100000100000200000200000, +#SCROLL 0.75 +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#SCROLL 1 +800000000000000000000200200000000000000000000000 +200000000000100100100000400000000000000000000000, +#GOGOSTART +300000000000000000200000100000000000200000100000 +200000200000100000100000200000100000200000000000, +100000100000100000200000100000100000200000200000 +100100100000200000100000200000100000200000200000, +100000000000000000200000100000000000200000000000 +200000100000100000200000100000000000200000000000, +200000000000100100100000200000000000100000100000 +200000100000100000100000200000100000100000100000, +500000000000000000000000000000000000000000000008 +000000000000100000100000200000100000200000000000, +200000100000100000200000100000100000200010001000 +200000100000200000100000200000200000200000100000, +200000000000100000200000100000100000200000000000 +100000100000200000200000200010001000100010001000, +200000000000100010001000200020002000100010001000 +200020002000200020002000100010001000100010001000, +#GOGOEND +200000000000000000200000000000000000200000000000 +300000000000200000300000200000000000300000000000, +200000200000200000200000 +#GOGOSTART +300000100000200000200000 +100100100000200000100000200000100000200000200000, +100000000000000000400000000000000000100000000000 +200000000000100000400000000000000000100000000000, +200000000000100100100000200000000000100000000000 +200000100000100000100000200000100000100000100000, +500000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000008, +000000000000000000000000200000000000100000100000 +200000000000100100100000200000000000100000000000, +100100100000100000200000100000100000200000200000 +100100100000100000200000100000100000200000200000, +100100100000200000200000100000000200000000200000 +100100100000200000200000100000100000100000100000, +200000000000000000000000200000000000000000000000 +400000000000000000100000400000000000100000000000, +200100100000100000100000200100100000100000100000 +200100100000200000100000200100100000200000100000, +#GOGOEND +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000200000200000200000200000, +200000002000000020000000200000002000000020000000 +200000002000000020000000200000002000000020000000, +100000200000200000200000200000200000200000200000 +100000200000100000200000100000200000100000100000, +#GOGOSTART +200000100000100000100000100000100000200000100000 +100000100000100000100000100000100000200000100000, +100000100000200000100000100000200000100000100000 +200000100000200000100000200100100000200100100100, +#GOGOEND +100000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#MEASURE 4/4 +000000000000000000000000000000000000000000000000, +#M +#BARLINEOFF +200000000000000000000000200000000000000000000000, +#BARLINEON +#MEASURE 8/4 +200000000000000000000000000000000200200000000000 +000000000000000000000000200000200000200000200000, +200000002000000020000000200000002000000020000000 +200000002000000020000000200000002000000020000000, +100000200000200000200000200000200000200000200000 +100000200000100000200000100000200000100100100100, +#GOGOSTART +200000000000100000200000000000100100200000200000 +100100200000200000100100200000000000400000000000, +#GOGOEND +000000000000200000200000300020002000200020002000 +100010001000100010001000200020002000200020002000, +100000000000000000000000000000000000100000100000 +200000000000000000200000000000000000200000000000, +#GOGOSTART +300000000000000000300000000000000000300000000000 +000000300000000000000000300000000000400000000000, +100000100000100000100100100000100000100100100000 +100000100100100000100000100100100100100100100100, +#GOGOEND +100000000000000000000000200000000000000000000000 +200000000000000000002000200000000000200000000000, +000000000000200000000000000000000000200000000000 +000000000000200000000000000000000000000000000000, +#GOGOSTART +100000100000100000100000100000100000100000100000 +200000100000100000100000100000100000100100100100, +100000100000100000100000100000100000100000100000 +200100100000100000100100100000100000100100100100, +#GOGOEND +100000000000000000000000200000000000000000000000 +200000000000000000002000200000000000200000000000, +000000000000200000000000000000000000200000000000 +000000000000200000000000000000000000000000000000, +#GOGOSTART +100000000000000000000000100000000000100000000000 +200000000000100000000000100000000000100000000000, +100000100000100000100000100000100000100000100000 +200100100000100100100000100100100100100100100100, +#GOGOEND +100000100000200000200000100000100000200000100000 +100000100000200000200000100000100000200000100100, +100000100000200000200000100000100000200000100000 +100000100000200000100000100000100100200000100000, +100000100000200000200000100000100000200000100000 +100000100000200000200000100000100000200000100100, +100000100000200000200000100000100000200000100000 +100000100000200000100000200000100000200100100100, +100000000000400000200000100000100000200000100000 +100000200000100100100000200000100000100000200100, +100000100000200000100000100000200000100000100000 +200100100000200000200000100000100100200000200000, +100100100000100000100000200100100000100000100000 +100100100000100000100000200100100000100000100000, +100100100000200000100000100100100000200000100000 +100100100100100100100100200100100100100100100100, +#MEASURE 6/4 +100000000000000000100000200000000000100000000000 +200000100000200000000000, +#MEASURE 8/4 +100000000000000000100000200000000000100000000000 +100100100100200000000000100000000000100100100100, +#MEASURE 6/4 +100000000000000000100000200000000000100000000000 +200000100000200000000000, +#MEASURE 8/4 +100000000000000000100000000000200000100000200000 +100000000000200000100000200000200000100000200000, +#MEASURE 6/4 +000000000000000000100100200000000000100000000000 +000000001000000020000000, +#MEASURE 8/4 +200000000000000020000000000000002000000000000000 +200000000000000000200100100100100000200000200000, +#MEASURE 6/4 +100000100000200000100000200000000000200100100100 +100000100000200000100000, +#MEASURE 8/4 +200000000000000000000000200000000000000000000000 +100000000000000000100000200000000000100000000000, +300000000000000000100000200000000000100100100000 +100000100000100000000000200000000000100000100000, +100000100000100000100000200000000000100000100000 +200100100000100000000000200000100000100000100000, +100000000000100000100000200000000000100100100000 +100000100000100000100000200000000000100000100000, +100000100000100000100000200000100000100000100000 +200100100000100000100000200000100000100000100000, +300000000000100000100000200000000000100100100000 +100000000000100000100000200000000000100000100000, +100000000000100000000000200000100000100000000000 +200100100000100000100000200000000000100000000000, +100000100000100000100000100000100000100000100000 +200000100000100000100000100000100000100000100000, +500000000000000000000000000000000000000008000000 +600000000000000000000000000000000000000008000000, +#MEASURE 4/4 +#BPMCHANGE 166.5 +#SCROLL 0.75 +100000000000000000000000202000000000202000000000, +202000000000202000202000100000000200000100200000, +100000100100200000200000100000202020202020101010, +100000002000100010002000200000001000200020002000 +1010101020002000, +100000100000202000000000202000100200100200100000, +100000000200100200200200100000101010200200100200, +100020002000200020202000100000000000202000100200, +100000002000200020001000200020001000000010001000 +1010100010001000, +#MEASURE 8/4 +#BPMCHANGE 333 +#SCROLL 0.5 +100000000000000000000000200000000000100000100100 +200000000000000000000000100000000000100000100000, +000000000000100000000000200000100000000000100100 +200000000000000000100000000000000000200000200000, +000000000000000000000000200000000000000000100100 +200000000000100000000000000000000000000000000000, +100000000000000000100000200000000000100000100100 +200000100000000000200000200000000000100100100100, +#SCROLL 0.53 +100000000000000000000000200000000000100000100100 +200000000000000000000000100000000000100000100000, +#SCROLL 0.58 +100000000000000000000000200000000000100000100100 +200000000000100000100000100000000000200000000000, +#SCROLL 0.63 +100000000000100000000000200000000000100000100100 +200000000000100000000000100000100000200000200000, +#SCROLL 0.68 +100100100000100000200000100100100000200000200000 +100100100000100000200000100100100000200000200000, +#SCROLL 0.75 +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#SCROLL 1 +800000000000000000000200200000000000000000000000 +200000000000100100100100200000000000000000000000, +#GOGOSTART +300000000000000000200000100000000000200000100000 +200000200000100100100000200000100000200000000000, +100000100000100000200000100000100000200000200000 +100100100000200000100000200000100000200000200000, +100000000000000000200000100000000000200000000000 +200000100000100100200000100000000000200000000000, +200000000000100100100100200000000000100000100000 +200000100000100100100000200000100000100000100000, +700000000000000000800000200200200200100100100100 +100000000000100000100000200000100000200000100000, +200000100000100000200000100000100000200100100100 +200000100000200000100000200000200000200000100000, +200000000000100000200000100000100000200000000000 +100000100000200000200000200010001000100010001000, +200000000000200010001000200020002000100010001000 +200020002000200020002000100100100100100100100100, +#GOGOEND +200000000000000000200000000000000000200000000000 +300000000000200000300000200000000000300000000000, +200000200000200000200200 +#GOGOSTART +100000100000200000200000 +100100100000200000100000200000100000200000200000, +100000000000000000400000000000000000100000000000 +200000000000100000400000000000000000100000000000, +200000100000100100100100200000100000100000100000 +200100100000100100100000200100100100100100100100, +500000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000008, +000000000000000000000000200000000000100000100000 +200000000000100100100000200000000000100000000000, +100100100000200000200000100000100100200000200000 +100100100000200000200000100000100100200000200000, +100100100000200000200000100000100200000100200000 +100100100100200000200000100100100000100100100100, +200000000000000000000000200000000000000000000000 +400000000000000000100000400000000000100000000000, +200100100100100100100100200100100100100100100100 +200100100100200100100100200100100100200100100100, +#GOGOEND +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000200000200000200000200000, +200000002000000020000000200000002000000020000000 +200000002000000020000000200000002000000020000000, +100000200000200000200000200000200000200000200000 +100000200000100000200000100000200000100000100000, +#GOGOSTART +200100100000100000100100100000100000200100100000 +100000100100100000100000100100100000200000100000, +100100100000200000100100100000200000100100100000 +200100100100200100100100200100200100200100200100, +#GOGOEND +100000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#MEASURE 4/4 +000000000000000000000000000000000000000000000000, +#END + +COURSE:Oni +LEVEL:7 +BALLOON:24 + + +#START +#BARLINEOFF +#MEASURE 5/4 +#SCROLL 0.5 +000000000000000000000000000000000000000000000000 +000000000000, +#BARLINEON +#MEASURE 8/4 +300000000000000000000000200000000000000000000000 +200000000000000000000000200000000000000000000000, +200000000000000000000000000000000000200000000000 +000000000000000000000000000000000000000000000000, +200000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +200000000000000000000000200000000000000000000000 +200000000000200000000000200000000000200000000000, +#GOGOSTART +300000000000000000300000000000000000300000000000 +000000300000000000000000300000000000300000000000, +#GOGOEND +000000000000000000000000300000000000000000000000 +000000000000000000000000000000000000000000000000, +100000000000000000000000000000000000200000200000 +200000000000000000200000000000000000200000000000, +#GOGOSTART +300000000000000000300000000000000000300000000000 +000000300000000000000000300000000000300000000000, +600000000000000000000000000000000000000000000000 +000000000000000000000000000000000008000000000000, +#GOGOEND +300000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#GOGOSTART +100000000000100000000000100000000000100000000000 +100000100000100000000000100000000000100000000000, +100000100000100000000000100000100000100000000000 +100000100000100000100000100000100000100000000000, +#GOGOEND +300000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#GOGOSTART +200000000000200000000000200000000000200000000000 +200000200000200000000000200000000000200000000000, +200000200000200000000000200000200000200000000000 +200000200000200000200000200000200000200000000000, +#GOGOEND +100000100000100000000000100000100000100000000000 +100000000000100000100000100000000000000000000000, +100000100000100000000000100000100000100000000000 +100000000000100000000000100000100000100000000000, +100000100000100000000000100000100000100000000000 +100000000000100000100000100000000000000000000000, +100000100000100000000000100000100000100000000000 +200000200000200000200000200000000000200000000000, +100000000000000000100000000000000000100000000000 +000000100000000000000000100000000000000000100000, +000000000000100000000000000000100000000000000000 +100000000000200000200000200000200000200000000000, +100000000000100000100000100000000000000000000000 +200000000000100000100000200000000000000000000000, +100000000000100000100000200000000000100000100000 +100000000000100000100000200000000000000000000000, +#MEASURE 6/4 +300000000000000000000000100000000000100000000000 +000000000000100000000000, +#MEASURE 8/4 +200000000000000000000000200000000000200000000000 +000000000000200000000000200000000000100000100000, +#MEASURE 6/4 +100000000000000000000000100000000000100000000000 +000000000000100000000000, +#MEASURE 8/4 +200000000000000000200000000000000000200000200000 +100000000000000000200000000000000000200000000000, +#MEASURE 6/4 +100000000000000000000000100000000000100000000000 +000000002000000020000000, +#MEASURE 8/4 +200000000000000020000000000000002000000000000000 +200000000000000000100000000000000000200000000000, +#MEASURE 6/4 +100000100000100000000000200000000000100000100000 +100000000000200000000000, +#MEASURE 8/4 +200000000000000000000000200000000000000000000000 +100000000000000000000000200000000000000000000000, +300000000000000000000000200000000000100000000000 +100000100000100000000000200000000000100000000000, +100000100000100000000000200000000000100000000000 +200000000000100000100000200000000000100000000000, +100000000000000000000000200000000000100000000000 +100000100000100000000000200000000000100000000000, +100000100000100000000000200000000000100000000000 +200000000000100000100000200000000000200000000000, +100000000000000000000000200000000000100000000000 +100000100000100000000000200000000000100000000000, +100000100000100000000000200000000000100000000000 +200000000000100000100000200000000000000000000000, +100000100000100000100000100000000000100000000000 +100000100000100000100000100000000000100000000000, +200000200000200000200000200000000000200000000000 +200000200000200000200000200000000000000000000000, +#MEASURE 4/4 +#BPMCHANGE 166.5001678466796875 +#SCROLL 0.75 +300000000000000000000000200000000000200000000000, +100000000000100000100000200000000000200200200000, +100000000000100000100000200000000000100100100000, +100000000000000010000000000000002000200020002000 +2000000020000000, +100000000000100000000000200000000000200200200000, +100000000000100100100000200000000000200200200000, +100000100100100000100000200000000000100100100000, +100000000000000010000000000000002000200020002000 +2000000020000000, +#MEASURE 8/4 +#BPMCHANGE 333.000335693359375 +#SCROLL 0.5 +100000100000100000000000100000100000100000000000 +100000000000100000100000100000000000100000000000, +000000000000100000000000100000100000100000000000 +100000000000100000100000200000000000000000000000, +100000100000100000000000100000100000100000000000 +100000000000100000100000100000000000000000000000, +100000100000100000000000100000100000100000000000 +200000200000200000200000200000000000000000000000, +100000100000100000000000100000100000100000000000 +100000000000100000100000100000000000100000000000, +000000000000100000000000100000100000100000000000 +100000000000100000100000200000000000000000000000, +100000100000100000000000100000100000100000000000 +100000000000200000200000200000000000200000000000, +500000000000000000000000000000000000000000000000 +000000000000000000000000000000000008000000000000, +300000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000400000000000000000000000 +400000000000000000000000400000000000000000000000, +#GOGOSTART +300000000000000000100000000000000000200000000000 +100000100000100000000000200000000000200000000000, +100000100000100000000000200000200000200000000000 +100000000000200000200000100000000000200000000000, +100000000000000000100000000000000000100000000000 +200000000000000000200000000000000000200000000000, +100000000000100000100000100000000000000000000000 +200000200000100000000000200000000000000000000000, +300000000000000000000000200000200000200000200000 +100000000000000000000000100000100000100000100000, +100000000000000000100000000000000000100000100000 +200000000000200000000000200000200000200000000000, +100000000000000000100000000000000000200000000000 +100000000000100000100000100000100000100000000000, +200000000000100000100000200000000000100000000000 +200000200000100000000000200000000000000000000000, +#GOGOEND +300000000000000000200000000000000000200000000000 +300000000000200000000000200000000000200000000000, +200000200000200000000000 +#GOGOSTART +300000000000000000000000 +100000000000200000200000100000000000200000000000, +100000000000000000300000000000000000100000000000 +200000000000000000400000000000000000200000000000, +100000000000100000100000100000000000000000000000 +200000200000100000000000200000000000000000000000, +300000000000000000000000100000100000100000000000 +200000000000200000000000100000100000100000100000, +100000000000100000100000200000000000100000100000 +100000000000100000100000200000000000000000000000, +100000000000200000000000100000100000200000000000 +100000000000200000200000100000000000200000000000, +100000100000100000100000200000000000200000000000 +100000100000100000100000200000000000000000000000, +300000000000000000000000300000000000000000000000 +400000000000000000000000400000000000000000000000, +600000000000000000000000000000000000000000000000 +000000000000000000000000000000000008000000000000, +#GOGOEND +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +200000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +200000000000000000000000200000000000000000000000 +200000000000200000000000200000000000200000000000, +#GOGOSTART +100000000000000000000000000000000000100000000000 +000000000000000000000000000000000000100000000000, +000000000000100000000000100000100000100000000000 +100000100000100000000000100000100000100000100000, +#GOGOEND +100000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#MEASURE 4/4 +000000000000000000000000000000000000000000000000, +#END + +COURSE:Hard +LEVEL:5 +BALLOON:21,9,18,21,21 + + +#START +#BARLINEOFF +#MEASURE 5/4 +#SCROLL 0.5 +000000000000000000000000000000000000000000000000 +000000000000, +#BARLINEON +#MEASURE 8/4 +300000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +200000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +200000000000000000000000200000000000000000000000 +200000000000000000000000000000000000000000000000, +#GOGOSTART +300000000000000000300000000000000000300000000000 +000000300000000000000000300000000000300000000000, +#GOGOEND +000000000000000000000000300000000000000000000000 +000000000000000000000000000000000000000000000000, +100000000000000000000000000000000000000000000000 +200000000000000000200000000000000000200000000000, +#GOGOSTART +300000000000000000300000000000000000300000000000 +000000300000000000000000300000000000300000000000, +600000000000000000000000000000000000000000000000 +000000000000000000000000000000000008000000000000, +#GOGOEND +300000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#GOGOSTART +500000000000000000000000000000000008000000000000 +500000000000000000000000000000000008000000000000, +500000000000000000000000000000000008000000000000 +500000000000000000000000000000000008000000000000, +#GOGOEND +100000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#GOGOSTART +600000000000000000000000000000000008000000000000 +600000000000000000000000000000000008000000000000, +600000000000000000000000000000000008000000000000 +600000000000000000000000000000000008000000000000, +#GOGOEND +100000000000000000000000100000000000000000000000 +100000000000000000000000100000000000100000000000, +100000000000000000000000100000000000000000000000 +100000000000000000000000200000000000200000000000, +100000000000000000000000100000000000000000000000 +100000000000000000000000100000000000100000000000, +100000000000000000000000100000000000000000000000 +200000000000200000000000200000000000200000000000, +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +300000000000000000000000300000000000000000000000 +300000000000000000000000300000000000000000000000, +400000000000000000000000400000000000000000000000 +400000000000000000000000400000000000000000000000, +#MEASURE 6/4 +100000000000000000000000100000000000100000000000 +000000000000100000000000, +#MEASURE 8/4 +200000000000000000000000200000000000200000000000 +000000000000200000000000200000000000000000000000, +#MEASURE 6/4 +100000000000000000000000100000000000100000000000 +000000000000100000000000, +#MEASURE 8/4 +200000000000000000200000000000000000200000000000 +200000000000000000200000000000000000200000000000, +#MEASURE 6/4 +100000000000000000000000100000000000100000000000 +000000007000000000000000, +#MEASURE 8/4 +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +#MEASURE 6/4 +100000000000000000000000100000000000100000000000 +000000000000100000000000, +#MEASURE 8/4 +200000000000000000000000200000000000000000000000 +200000000000000000000000200000000000000000000000, +100000000000000000000000100000000000000000000000 +100000000000100000000000200000000000200000000000, +100000000000000000000000100000000000100000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +100000000000100000000000200000000000200000000000, +100000000000000000000000100000000000100000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +100000000000100000000000200000000000200000000000, +100000000000000000000000100000000000100000000000 +200000000000000000000000000000000000000000000000, +500000000000000000000000000000000008000000000000 +500000000000000000000000000000000008000000000000, +600000000000000000000000000000000008000000000000 +600000000000000000000000000008000000000000000000, +#MEASURE 4/4 +#BPMCHANGE 166.5001678466796875 +#SCROLL 0.75 +300000000000000000000000200000000000200000000000, +100000000000100000100000200000000000000000000000, +100000000000100000100000200000000000200000000000, +100000000000000010000000000000002000000020000000 +2000000020000000, +100000000000100000000000200000000000100000100000, +100000000000100000100000200000000000000000000000, +100000100000100000000000200000000000100000100000, +100000000000000010000000000000002000000020000000 +2000000020000000, +#MEASURE 8/4 +#BPMCHANGE 333.000335693359375 +#SCROLL 0.5 +100000000000000000000000100000000000200000000000 +100000000000000000000000100000000000100000000000, +000000000000200000000000100000000000000000000000 +100000000000000000000000200000000000200000000000, +100000000000000000000000100000000000200000000000 +100000000000000000000000100000000000100000000000, +100000000000200000000000100000000000000000000000 +200000000000200000000000200000000000200000000000, +100000000000000000000000100000000000200000000000 +100000000000000000000000100000000000100000000000, +000000000000200000000000100000000000000000000000 +100000000000000000000000200000000000200000000000, +100000000000000000000000100000000000200000000000 +100000000000000000000000100000000000100000000000, +500000000000000000000000000000000000000000000000 +000000000000000000000000000000000008000000000000, +300000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000400000000000000000000000 +400000000000000000000000400000000000000000000000, +#GOGOSTART +300000000000000000100000000000000000100000000000 +200000000000200000000000200000000000200000000000, +100000000000100000000000200000000000200000000000 +100000000000100000000000200000000000200000000000, +100000000000000000100000000000000000100000000000 +200000000000000000200000000000000000200000000000, +100000000000000000000000100000000000000000000000 +200000000000000000000000200000000000000000000000, +500000000000000000000000000000000000000000000000 +000000000000000000000008000000000000000000000000, +100000000000000000100000000000000000100000000000 +200000000000200000000000200000000000200000000000, +100000000000000000100000000000000000100000000000 +700000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000800000000000000000000000, +#GOGOEND +100000000000000000200000000000000000200000000000 +100000000000200000000000200000000000200000000000, +200000000000000000000000 +#GOGOSTART +300000000000000000000000 +100000000000100000000000200000000000200000000000, +100000000000000000100000000000000000100000000000 +200000000000000000200000000000000000200000000000, +100000000000000000000000100000000000000000000000 +200000000000000000000000200000000000000000000000, +500000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000008, +000000000000000000000000100000000000000000000000 +200000000000000000000000200000000000000000000000, +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +300000000000000000000000300000000000000000000000 +400000000000000000000000400000000000000000000000, +600000000000000000000000000000000000000000000000 +000000000000000000000000000000000008000000000000, +#GOGOEND +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +200000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +200000000000000000000000200000000000000000000000 +200000000000000000000000000000000000000000000000, +#GOGOSTART +600000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000008000000000000, +#GOGOEND +300000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#MEASURE 4/4 +000000000000000000000000000000000000000000000000, +#END + +COURSE:Normal +LEVEL:5 +BALLOON:17,12,5,12,12,12 + + +#START +#BARLINEOFF +#MEASURE 5/4 +#SCROLL 0.5 +000000000000000000000000000000000000000000000000 +000000000000, +#BARLINEON +#MEASURE 8/4 +300000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +200000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +200000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +#GOGOSTART +600000000000000000000000000000000000000000000000 +000000000000000000000000000000000008000000000000, +#GOGOEND +000000000000000000000000300000000000000000000000 +000000000000000000000000000000000000000000000000, +100000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +#GOGOSTART +900000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000008, +#GOGOEND +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#GOGOSTART +500000000000000000000000000000000008000000000000 +500000000000000000000000000000000008000000000000, +500000000000000000000000000000000008000000000000 +500000000000000000000000000000000008000000000000, +#GOGOEND +100000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#GOGOSTART +600000000000000000000000000000000008000000000000 +600000000000000000000000000000000008000000000000, +600000000000000000000000000000000008000000000000 +600000000000000000000000000000000008000000000000, +#GOGOEND +100000000000000000000000100000000000000000000000 +100000000000000000000000100000000000100000000000, +100000000000000000000000100000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +100000000000000000000000100000000000100000000000, +100000000000000000000000100000000000000000000000 +200000000000000000000000000000000000000000000000, +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +300000000000000000000000300000000000000000000000 +300000000000000000000000300000000000000000000000, +600000000000000000000000000000000000000000000000 +000000000000000000000008000000000000000000000000, +#MEASURE 6/4 +100000000000000000000000100000000000100000000000 +000000000000000000000000, +#MEASURE 8/4 +200000000000000000000000200000000000200000000000 +000000000000000000000000000000000000000000000000, +#MEASURE 6/4 +100000000000000000000000100000000000100000000000 +000000000000000000000000, +#MEASURE 8/4 +200000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +#MEASURE 6/4 +100000000000000000000000100000000000100000000000 +000000007000000000000000, +#MEASURE 8/4 +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +#MEASURE 6/4 +100000000000000000000000100000000000100000000000 +000000000000000000000000, +#MEASURE 8/4 +200000000000000000000000200000000000000000000000 +200000000000000000000000200000000000000000000000, +100000000000000000000000000000000000000000000000 +100000000000000000000000100000000000100000000000, +100000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000000000000000000000000000 +100000000000000000000000100000000000100000000000, +100000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000000000000000000000000000 +100000000000000000000000100000000000100000000000, +100000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +500000000000000000000000000000000008000000000000 +500000000000000000000000000000000008000000000000, +600000000000000000000000000000000008000000000000 +600000000000000000000008000000000000000000000000, +#MEASURE 4/4 +#BPMCHANGE 166.5001678466796875 +#SCROLL 0.75 +300000000000000000000000200000000000000000000000, +100000000000100000100000200000000000000000000000, +100000000000000000000000200000000000000000000000, +100000000000000010000000000000002000000020000000 +2000000000000000, +100000000000000000000000200000000000000000000000, +100000000000100000100000200000000000000000000000, +100000000000000000000000200000000000000000000000, +100000000000000010000000000000002000000020000000 +2000000000000000, +#MEASURE 8/4 +#BPMCHANGE 333.000335693359375 +#SCROLL 0.5 +100000000000000000000000100000000000000000000000 +100000000000000000000000100000000000100000000000, +000000000000000000000000100000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +100000000000000000000000100000000000100000000000, +100000000000000000000000100000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +100000000000000000000000100000000000100000000000, +000000000000000000000000100000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +100000000000000000000000100000000000100000000000, +500000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000008, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000400000000000000000000000 +400000000000000000000000400000000000000000000000, +#GOGOSTART +300000000000000000000000000000000000000000000000 +200000000000200000000000200000000000000000000000, +100000000000100000000000100000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000100000000000000000000000000000 +200000000000000000200000000000000000000000000000, +100000000000000000000000100000000000000000000000 +200000000000000000000000200000000000000000000000, +500000000000000000000000000000000000000000000000 +000000000000000000000008000000000000000000000000, +100000000000000000000000000000000000000000000000 +200000000000200000000000200000000000000000000000, +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +#GOGOEND +100000000000000000000000000000000000000000000000 +100000000000000000000000200000000000200000000000, +200000000000000000000000 +#GOGOSTART +100000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000100000000000000000000000000000 +200000000000000000200000000000000000000000000000, +100000000000000000000000100000000000000000000000 +200000000000000000000000200000000000000000000000, +500000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000008, +000000000000000000000000100000000000000000000000 +200000000000000000000000200000000000000000000000, +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +300000000000000000000000300000000000000000000000 +400000000000000000000000400000000000000000000000, +600000000000000000000000000000000000000000000000 +000000000000000000000000000000000008000000000000, +#GOGOEND +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +200000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +200000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +#GOGOSTART +600000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000008000000000000, +#GOGOEND +300000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#MEASURE 4/4 +000000000000000000000000000000000000000000000000, +#END + +COURSE:Easy +LEVEL:3 +BALLOON:13,10,4,10,10,10 + + +#START +#BARLINEOFF +#MEASURE 5/4 +#SCROLL 0.5 +000000000000000000000000000000000000000000000000 +000000000000, +#BARLINEON +#MEASURE 8/4 +300000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +200000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +200000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +#GOGOSTART +600000000000000000000000000000000000000000000000 +000000000000000000000000000000000008000000000000, +#GOGOEND +000000000000000000000000300000000000000000000000 +000000000000000000000000000000000000000000000000, +100000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +#GOGOSTART +900000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000008, +#GOGOEND +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#GOGOSTART +500000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000008, +#GOGOEND +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#GOGOSTART +600000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000008000000000000000000000000000000000000, +#GOGOEND +100000000000000000000000100000000000000000000000 +100000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +100000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +200000000000000000000000000000000000000000000000, +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +300000000000000000000000300000000000000000000000 +300000000000000000000000300000000000000000000000, +600000000000000000000000000000000000000000000000 +000000000000000000000008000000000000000000000000, +#MEASURE 6/4 +100000000000000000000000100000000000000000000000 +000000000000000000000000, +#MEASURE 8/4 +200000000000000000000000200000000000000000000000 +000000000000000000000000000000000000000000000000, +#MEASURE 6/4 +100000000000000000000000100000000000000000000000 +000000000000000000000000, +#MEASURE 8/4 +200000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +#MEASURE 6/4 +100000000000000000000000100000000000000000000000 +000000007000000000000000, +#MEASURE 8/4 +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +#MEASURE 6/4 +100000000000000000000000100000000000000000000000 +000000000000000000000000, +#MEASURE 8/4 +200000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000000000000000000000000000 +000000000000000000000000100000000000000000000000, +100000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000000000000000000000000000 +000000000000000000000000100000000000000000000000, +100000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000000000000000000000000000 +000000000000000000000000100000000000000000000000, +100000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +500000000000000000000000000000000000000000000000 +000000000000000000000000000000000008000000000000, +600000000000000000000000000000000000000000000000 +000000000008000000000000000000000000000000000000, +#MEASURE 4/4 +#BPMCHANGE 166.5001678466796875 +#SCROLL 0.75 +300000000000000000000000200000000000000000000000, +000000000000000000000000200000000000000000000000, +100000000000000000000000200000000000000000000000, +000000000000000000000000000000002000000000000000 +0000000000000000, +100000000000000000000000200000000000000000000000, +000000000000000000000000200000000000000000000000, +100000000000000000000000200000000000000000000000, +000000000000000000000000000000002000000000000000 +0000000000000000, +#MEASURE 8/4 +#BPMCHANGE 333.000335693359375 +#SCROLL 0.5 +100000000000000000000000100000000000000000000000 +100000000000000000000000000000000000000000000000, +000000000000000000000000100000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +100000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +100000000000000000000000000000000000000000000000, +000000000000000000000000100000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +100000000000000000000000000000000000000000000000, +500000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000008, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000300000000000000000000000 +300000000000000000000000300000000000000000000000, +#GOGOSTART +300000000000000000000000000000000000000000000000 +200000000000000000000000200000000000000000000000, +100000000000000000000000100000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +200000000000000000000000200000000000000000000000, +500000000000000000000000000000000000000000000000 +000000000008000000000000000000000000000000000000, +100000000000000000000000000000000000000000000000 +200000000000000000000000200000000000000000000000, +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +#GOGOEND +400000000000000000000000000000000000000000000000 +400000000000000000000000000000000000000000000000, +000000000000000000000000 +#GOGOSTART +100000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +100000000000000000000000100000000000000000000000 +200000000000000000000000200000000000000000000000, +500000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000008, +000000000000000000000000100000000000000000000000 +100000000000000000000000100000000000000000000000, +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +300000000000000000000000300000000000000000000000 +300000000000000000000000300000000000000000000000, +600000000000000000000000000000000000000000000000 +000000000000000000000000000000000008000000000000, +#GOGOEND +700000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000008 +000000000000000000000000000000000000000000000000, +200000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +200000000000000000000000000000000000000000000000 +200000000000000000000000000000000000000000000000, +#GOGOSTART +600000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000008000000000000, +#GOGOEND +300000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000, +#MEASURE 4/4 +000000000000000000000000000000000000000000000000, +#END diff --git a/testing/data/emma.zip b/testing/data/emma.zip new file mode 100644 index 0000000..ee37a42 Binary files /dev/null and b/testing/data/emma.zip differ diff --git a/testing/data/hol6po.tja b/testing/data/hol6po.tja index 8d66ffe..bdbe075 100644 --- a/testing/data/hol6po.tja +++ b/testing/data/hol6po.tja @@ -519,7 +519,7 @@ SCOREDIFF:67 COURSE:Oni LEVEL:6 -BALLOON:7,9,5,3,3,15,3,3,4,23 +BALLOON:7,13,7,4,4,21,4,4,2,35 SCOREINIT:520 SCOREDIFF:122 @@ -689,7 +689,7 @@ SCOREDIFF:122 COURSE:Hard LEVEL:3 -BALLOON:30,14,6,16,18,18,18,18 +BALLOON:30,14,9,16,18,18,18,18 SCOREINIT:570 SCOREDIFF:140 diff --git a/testing/data/ia6cho.tja b/testing/data/ia6cho.tja index 9dfbb98..5eae783 100644 --- a/testing/data/ia6cho.tja +++ b/testing/data/ia6cho.tja @@ -463,7 +463,7 @@ SCOREDIFF:117 COURSE:Normal LEVEL:5 -BALLOON:9,9 +BALLOON:9,10 SCOREINIT:570 SCOREDIFF:157 @@ -621,7 +621,7 @@ SCOREDIFF:157 COURSE:Easy LEVEL:3 -BALLOON:5,7,6 +BALLOON:5,7,7 SCOREINIT:510 SCOREDIFF:155 diff --git a/testing/data/linda.tja b/testing/data/linda.tja index da12637..9895014 100644 --- a/testing/data/linda.tja +++ b/testing/data/linda.tja @@ -777,7 +777,7 @@ SCOREDIFF:215 COURSE:Easy LEVEL:4 -BALLOON:20 +BALLOON:18 SCOREINIT:710 SCOREDIFF:287 diff --git a/testing/test_conversion.py b/testing/test_conversion.py index 368766c..da845d1 100644 --- a/testing/test_conversion.py +++ b/testing/test_conversion.py @@ -11,6 +11,7 @@ from tja2fumen.parsers import parse_fumen @pytest.mark.parametrize('id_song', [ + pytest.param('emma'), pytest.param('butou5'), pytest.param('shoto9', marks=pytest.mark.skip("TJA measures do not match fumen.")), @@ -165,7 +166,10 @@ def test_converted_tja_vs_cached_fumen(id_song, tmp_path, entry_point): i_branch, i_note, abv=25.0) except AssertionError: pass - if ca_note.note_type not in ["Balloon", "Kusudama"]: + if ca_note.note_type in ["Balloon", "Kusudama"]: + check(co_note, ca_note, 'hits', i_measure, + i_branch, i_note) + else: check(co_note, ca_note, 'score_init', i_measure, i_branch, i_note) check(co_note, ca_note, 'score_diff', i_measure,