Fix crash for #SECTION
commands that occur before the first #BRANCHSTART
(#36)
This PR adds `genpe.tja` to the test suite, a song that currently fails
due to how `tja2fumen` handles `#SECTION` commands.
We fix the problems with branching commands in
8ad2102f0a
. (Making sure that any #SECTION
commands that occur before the first #BRANCHSTART are properly handled.)
This PR also contains a few refactoring commits to improve the clarity
of how the branching logic works, to make further debugging of branching
songs easier.
Fixes #33.
This commit is contained in:
parent
ee265327de
commit
fbe2fe21cc
@ -51,6 +51,12 @@ def processTJACommands(tja):
|
|||||||
measureTJAProcessed.delay = data.value * 1000 # ms -> s
|
measureTJAProcessed.delay = data.value * 1000 # ms -> s
|
||||||
elif data.name == 'branchStart':
|
elif data.name == 'branchStart':
|
||||||
measureTJAProcessed.branchStart = data.value
|
measureTJAProcessed.branchStart = data.value
|
||||||
|
# If the measure immediately preceding a #BRANCHSTART has a #SECTION command, then remove it.
|
||||||
|
# From TJA spec: "Placing [a #SECTION command] near #BRANCHSTART or a measure before does not reset
|
||||||
|
# the accuracy for that branch. The value is calculated before it and a measure
|
||||||
|
# has not started yet at that point."
|
||||||
|
if tjaBranchesProcessed[branchName][-1].branchStart == ["#SECTION", -1, -1]:
|
||||||
|
tjaBranchesProcessed[branchName][-1].branchStart = None
|
||||||
elif data.name == 'barline':
|
elif data.name == 'barline':
|
||||||
currentBarline = bool(int(data.value))
|
currentBarline = bool(int(data.value))
|
||||||
measureTJAProcessed.barline = currentBarline
|
measureTJAProcessed.barline = currentBarline
|
||||||
@ -194,11 +200,25 @@ def convertTJAToFumen(tja):
|
|||||||
if measureTJAProcessed.branchStart:
|
if measureTJAProcessed.branchStart:
|
||||||
# Determine which values to assign based on the type of branching condition
|
# Determine which values to assign based on the type of branching condition
|
||||||
if measureTJAProcessed.branchStart[0] == 'p':
|
if measureTJAProcessed.branchStart[0] == 'p':
|
||||||
vals = [int(total_notes_branch * v * 20) if 0 <= v <= 1 # Ensure value is actually a percentage
|
vals = []
|
||||||
else int(v * 100) # If it's not, pass the value as-is
|
for percent in measureTJAProcessed.branchStart[1:]:
|
||||||
for v in measureTJAProcessed.branchStart[1:]]
|
# Ensure percentage is actually a percentage value
|
||||||
|
if 0 <= percent <= 1:
|
||||||
|
val = total_notes_branch * percent * 20
|
||||||
|
# If the result is very close, then round to account for lack of precision in percentage
|
||||||
|
if abs(val - round(val)) < 0.1:
|
||||||
|
val = round(val)
|
||||||
|
vals.append(int(val))
|
||||||
|
# If it isn't a percentage value, then pass it back as-is
|
||||||
|
else:
|
||||||
|
vals.append(int(percent * 100))
|
||||||
|
# If it's a drumroll then use the branch condition values as-is
|
||||||
elif measureTJAProcessed.branchStart[0] == 'r':
|
elif measureTJAProcessed.branchStart[0] == 'r':
|
||||||
vals = measureTJAProcessed.branchStart[1:]
|
vals = measureTJAProcessed.branchStart[1:]
|
||||||
|
# If it's a #SECTION command, use the branch condition values as-is AND reset the accuracy
|
||||||
|
elif measureTJAProcessed.branchStart[0] == '#SECTION':
|
||||||
|
vals = measureTJAProcessed.branchStart[1:]
|
||||||
|
note_counter_branch = 0
|
||||||
# Determine which bytes to assign the values to
|
# Determine which bytes to assign the values to
|
||||||
if currentBranch == 'normal':
|
if currentBranch == 'normal':
|
||||||
idx_b1, idx_b2 = 0, 1
|
idx_b1, idx_b2 = 0, 1
|
||||||
@ -209,8 +229,14 @@ def convertTJAToFumen(tja):
|
|||||||
# Assign the values to their intended bytes
|
# Assign the values to their intended bytes
|
||||||
measureFumen.branchInfo[idx_b1] = vals[0]
|
measureFumen.branchInfo[idx_b1] = vals[0]
|
||||||
measureFumen.branchInfo[idx_b2] = vals[1]
|
measureFumen.branchInfo[idx_b2] = vals[1]
|
||||||
# Reset the note counter corresponding to this branch
|
# Reset the note counter corresponding to this branch (i.e. reset the accuracy)
|
||||||
total_notes_branch = 0
|
total_notes_branch = 0
|
||||||
|
|
||||||
|
# NB: We update the branch condition note counter *after* we check the current measure's branch condition.
|
||||||
|
# This is because the TJA spec says:
|
||||||
|
# "The requirement is calculated one measure before #BRANCHSTART, changing the branch visually when it
|
||||||
|
# is calculated and changing the notes after #BRANCHSTART."
|
||||||
|
# So, by delaying the summation by one measure, we perform the calculation with notes "one measure before".
|
||||||
total_notes_branch += note_counter_branch
|
total_notes_branch += note_counter_branch
|
||||||
|
|
||||||
# Create notes based on TJA measure data
|
# Create notes based on TJA measure data
|
||||||
|
@ -111,6 +111,7 @@ def parseCourseMeasures(course):
|
|||||||
# Check if the course has branches or not
|
# Check if the course has branches or not
|
||||||
hasBranches = True if [l for l in course.data if l.name == 'BRANCHSTART'] else False
|
hasBranches = True if [l for l in course.data if l.name == 'BRANCHSTART'] else False
|
||||||
currentBranch = 'all' if hasBranches else 'normal'
|
currentBranch = 'all' if hasBranches else 'normal'
|
||||||
|
branch_condition = None
|
||||||
flagLevelhold = False
|
flagLevelhold = False
|
||||||
|
|
||||||
# Process course lines
|
# Process course lines
|
||||||
@ -133,7 +134,7 @@ def parseCourseMeasures(course):
|
|||||||
|
|
||||||
# 2. Parse measure commands that produce an "event"
|
# 2. Parse measure commands that produce an "event"
|
||||||
elif line.name in ['GOGOSTART', 'GOGOEND', 'BARLINEON', 'BARLINEOFF', 'DELAY',
|
elif line.name in ['GOGOSTART', 'GOGOEND', 'BARLINEON', 'BARLINEOFF', 'DELAY',
|
||||||
'SCROLL', 'BPMCHANGE', 'MEASURE', 'BRANCHSTART']:
|
'SCROLL', 'BPMCHANGE', 'MEASURE', 'SECTION', 'BRANCHSTART']:
|
||||||
# Get position of the event
|
# Get position of the event
|
||||||
for branch in course.branches.keys() if currentBranch == 'all' else [currentBranch]:
|
for branch in course.branches.keys() if currentBranch == 'all' else [currentBranch]:
|
||||||
pos = len(course.branches[branch][idx_m].notes)
|
pos = len(course.branches[branch][idx_m].notes)
|
||||||
@ -155,27 +156,31 @@ def parseCourseMeasures(course):
|
|||||||
currentEvent = TJAData('bpm', float(line.value), pos)
|
currentEvent = TJAData('bpm', float(line.value), pos)
|
||||||
elif line.name == 'MEASURE':
|
elif line.name == 'MEASURE':
|
||||||
currentEvent = TJAData('measure', line.value, pos)
|
currentEvent = TJAData('measure', line.value, pos)
|
||||||
|
elif line.name == 'SECTION':
|
||||||
|
# If #SECTION occurs before the first #BRANCHSTART condition, then we have no percentage/drumroll values
|
||||||
|
# to use for the branchInfo bytes when writing to the fumen. So, we just use default values (-1, -1).
|
||||||
|
if branch_condition is None:
|
||||||
|
branch_condition = ['#SECTION', -1, -1]
|
||||||
|
# Otherwise, if #SECTION occurs after a #BRANCHSTART condition, then we just repeat the previous
|
||||||
|
# condition (to set the correct branchInfo bytes for this measure.)
|
||||||
|
currentEvent = TJAData('branchStart', branch_condition, pos)
|
||||||
elif line.name == 'BRANCHSTART':
|
elif line.name == 'BRANCHSTART':
|
||||||
if flagLevelhold:
|
if flagLevelhold:
|
||||||
continue
|
continue
|
||||||
currentBranch = 'all' # Ensure that the #BRANCHSTART command is present for all branches
|
currentBranch = 'all' # Ensure that the #BRANCHSTART command is present for all branches
|
||||||
values = line.value.split(',')
|
branch_condition = line.value.split(',')
|
||||||
if values[0] == 'r': # r = drumRoll
|
if branch_condition[0] == 'r': # r = drumRoll
|
||||||
values[1] = int(values[1]) # # of drumrolls
|
branch_condition[1] = int(branch_condition[1]) # # of drumrolls
|
||||||
values[2] = int(values[2]) # # of drumrolls
|
branch_condition[2] = int(branch_condition[2]) # # of drumrolls
|
||||||
elif values[0] == 'p': # p = Percentage
|
elif branch_condition[0] == 'p': # p = Percentage
|
||||||
values[1] = float(values[1]) / 100 # %
|
branch_condition[1] = float(branch_condition[1]) / 100 # %
|
||||||
values[2] = float(values[2]) / 100 # %
|
branch_condition[2] = float(branch_condition[2]) / 100 # %
|
||||||
currentEvent = TJAData('branchStart', values, pos)
|
currentEvent = TJAData('branchStart', branch_condition, pos)
|
||||||
idx_m_branchstart = idx_m # Preserve the index of the BRANCHSTART command to re-use for each branch
|
idx_m_branchstart = idx_m # Preserve the index of the BRANCHSTART command to re-use for each branch
|
||||||
|
|
||||||
# Append event to the current measure's events
|
# Append event to the current measure's events
|
||||||
for branch in course.branches.keys() if currentBranch == 'all' else [currentBranch]:
|
for branch in course.branches.keys() if currentBranch == 'all' else [currentBranch]:
|
||||||
course.branches[branch][idx_m].events.append(currentEvent)
|
course.branches[branch][idx_m].events.append(currentEvent)
|
||||||
elif line.name == 'SECTION':
|
|
||||||
# Simply repeat the same #BRANCHSTART condition that happened previously
|
|
||||||
# The purpose of #SECTION is to "Reset accuracy values for notes and drumrolls on the next measure."
|
|
||||||
course.branches[branch][idx_m].events.append(TJAData('branchStart', values, pos))
|
|
||||||
|
|
||||||
# 3. Parse commands that don't create an event (e.g. simply changing the current branch)
|
# 3. Parse commands that don't create an event (e.g. simply changing the current branch)
|
||||||
else:
|
else:
|
||||||
|
932
testing/data/genpe.tja
Normal file
932
testing/data/genpe.tja
Normal file
@ -0,0 +1,932 @@
|
|||||||
|
BPM:130.809005737305
|
||||||
|
OFFSET:-2.185
|
||||||
|
|
||||||
|
COURSE:Edit
|
||||||
|
LEVEL:10
|
||||||
|
STYLE:Single
|
||||||
|
BALLOON:
|
||||||
|
SCOREINIT:380
|
||||||
|
SCOREDIFF:90
|
||||||
|
|
||||||
|
#START
|
||||||
|
300000200200101010100000300000200200101010100000,
|
||||||
|
#BPMCHANGE 126.651481628418
|
||||||
|
100020002000100020002000500000000000000000000000,
|
||||||
|
#BPMCHANGE 133.79866027832
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
#BPMCHANGE 134.100387573242
|
||||||
|
008000000000000000000000000000000000000000000000,
|
||||||
|
#BPMCHANGE 125.664978027344
|
||||||
|
#SCROLL 1.05999994277954
|
||||||
|
100000000000200000200000100000200200200000100000,
|
||||||
|
#BPMCHANGE 127.921951293945
|
||||||
|
#SCROLL 1.03999996185303
|
||||||
|
100000000000000000200000200000000000000000200200,
|
||||||
|
#BPMCHANGE 130.834686279297
|
||||||
|
#SCROLL 1
|
||||||
|
100000000000200000200000100000200200200000100000,
|
||||||
|
#BPMCHANGE 131.710662841797
|
||||||
|
#MEASURE 2/4
|
||||||
|
100000000000200000200000,
|
||||||
|
#BPMCHANGE 130.000137329102
|
||||||
|
#MEASURE 4/4
|
||||||
|
#BARLINEOFF
|
||||||
|
100000100100200010102000100200100100200010102000,
|
||||||
|
#BARLINEON
|
||||||
|
100100100200200100200100200100200200100200000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000100100200100000100100000100100200100000100,
|
||||||
|
100000100100200100000100100100200100100100200000,
|
||||||
|
100000100100200100000100100000100100200100000100,
|
||||||
|
100000100100200100000100100100200100100100200000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
100200100100200200100200,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 4/4
|
||||||
|
#BARLINEOFF
|
||||||
|
100100101010200100100100100100101010200100100100,
|
||||||
|
#BARLINEON
|
||||||
|
100100101010200100100100200100200100200100200100,
|
||||||
|
100100101010200100100100100100101010200100100100,
|
||||||
|
100100101010200100100100200100200100200100200100,
|
||||||
|
#MEASURE 2/4
|
||||||
|
100200100100200200100200,
|
||||||
|
#MEASURE 4/4
|
||||||
|
#BARLINEOFF
|
||||||
|
100000001010200100200200100200200100200200100000,
|
||||||
|
#BARLINEON
|
||||||
|
101010000000202020000000101010000000200200100000,
|
||||||
|
100000001010200100200200100200200100200200100000,
|
||||||
|
101010000000202020000000101010000000300000000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000100100200100000100100000100100200100000100,
|
||||||
|
100000100100200100000100100100200100100100200000,
|
||||||
|
100000100100200100000100100000100100200100000100,
|
||||||
|
100000100100200100000100100100200100100100200000,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 2/4
|
||||||
|
100200100100200200100200,
|
||||||
|
#MEASURE 4/4
|
||||||
|
#BARLINEOFF
|
||||||
|
100000200100100200000100100200200100100000200100,
|
||||||
|
#BARLINEON
|
||||||
|
100000200100100200000100100200200100200100100200,
|
||||||
|
100000200100100200000100100200200100100000200100,
|
||||||
|
100000200100100200000100100200200100200100100200,
|
||||||
|
100000200100100200000100100200200100100000200100,
|
||||||
|
100000200100100200000100100200200100200100100200,
|
||||||
|
100000200100100200000100100200200100100000100200,
|
||||||
|
200100100200100200200100100200100200200100100200,
|
||||||
|
100000200000100100200000100010200010100100200000,
|
||||||
|
100000200000100100200000100010200010100100200000,
|
||||||
|
100000200000100100200000100010200010100100200000,
|
||||||
|
100000200000100100200000100010200010100010200000,
|
||||||
|
100000200000100100200000100010200010100100200000,
|
||||||
|
100000200000100100200000100010200010100100200000,
|
||||||
|
100000200000100100200000100010200010100100200000,
|
||||||
|
100000200000100100200000100010200010100010200010,
|
||||||
|
100000000000000000000000100000000000100000100000,
|
||||||
|
100100100100200100100200100100100100200100100200,
|
||||||
|
100100100100200100100200100200100100201010100000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
300000300000200200200200,
|
||||||
|
#GOGOSTART
|
||||||
|
#MEASURE 4/4
|
||||||
|
#BARLINEOFF
|
||||||
|
100000101010200100000100100000101010200100000100,
|
||||||
|
#BARLINEON
|
||||||
|
100000101010200100000100100100200200100100200000,
|
||||||
|
100000101010200100000100100000101010200100000100,
|
||||||
|
100000101010200100000100100100200200100100200000,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 2/4
|
||||||
|
100200100100200200100200,
|
||||||
|
#MEASURE 4/4
|
||||||
|
#BARLINEOFF
|
||||||
|
100100101010200100100100100100101010200100100100,
|
||||||
|
#BARLINEON
|
||||||
|
100100101010200100100100200100200100200100200100,
|
||||||
|
100100101010200200100100100100101010200200100100,
|
||||||
|
100100101010200200100100200100200100200100200100,
|
||||||
|
#MEASURE 2/4
|
||||||
|
100200100100200200100200,
|
||||||
|
#MEASURE 4/4
|
||||||
|
#BARLINEOFF
|
||||||
|
100000200100100200000100100200000200100100200100,
|
||||||
|
#BARLINEON
|
||||||
|
100000200100100200000100100200000100100200200100,
|
||||||
|
100000200100100200000100100200000200100100200100,
|
||||||
|
100000200100100200000100100200000100100200200100,
|
||||||
|
100000200100100200000100100200100100200000200100,
|
||||||
|
100000200100100200000100100200100100200000200100,
|
||||||
|
200000200100100200000200000200100100200000200000,
|
||||||
|
100200000200200200000200200200000200000300000000,
|
||||||
|
100000200100100200000100100200200100100000200100,
|
||||||
|
100000200100100200000200200100100200200000200100,
|
||||||
|
100000200100100200000100100200200100100000200100,
|
||||||
|
100000200100100200000200200100100200200000200100,
|
||||||
|
100000200100100200000100100200100200200100200100,
|
||||||
|
100000200100100200000100100200100200200100200100,
|
||||||
|
100000200200100100000000200200100100000000200000,
|
||||||
|
100100000000200000100100000200000100000300000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000101010200100000100100000101010200100000100,
|
||||||
|
100000101010200100100200100100200100200000000000,
|
||||||
|
100000101010200100000100100000101010200100000100,
|
||||||
|
100000101010200100100200100100200100200000000100,
|
||||||
|
#SECTION
|
||||||
|
#BRANCHSTART p, 52.85412, 73.99577
|
||||||
|
#N
|
||||||
|
100000201010200100000100200000000000300000000100,
|
||||||
|
100000201010200100000100200000000000300000000100,
|
||||||
|
100000201010200100000100200000000000300000000100,
|
||||||
|
100000201010200100000100508000000000000000000000,
|
||||||
|
#GOGOEND
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
#E
|
||||||
|
100000201010200100000100200000000000300000000100,
|
||||||
|
100000201010200100000100200000000000300000000100,
|
||||||
|
100000201010200100000100200000000000300000000100,
|
||||||
|
100000201010200100100100508000000000000000000000,
|
||||||
|
#GOGOEND
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
#M
|
||||||
|
100000201010200100000100200000000000300000000100,
|
||||||
|
100000201010200100000100200000000000300000000100,
|
||||||
|
100000201010200100000100200000000000300000000100,
|
||||||
|
100000201010200100100100100000000000000000000000,
|
||||||
|
#GOGOEND
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
#BRANCHEND
|
||||||
|
#END
|
||||||
|
|
||||||
|
// NB: I currently do not have an official fumen
|
||||||
|
// that has the correct 2P charts, so I've
|
||||||
|
// commented them out for now.
|
||||||
|
//STYLE:Double
|
||||||
|
//BALLOON:8
|
||||||
|
//SCOREINIT:380
|
||||||
|
//SCOREDIFF:90
|
||||||
|
//
|
||||||
|
//#START P1
|
||||||
|
//300000000000000000000000600000000008000000000000,
|
||||||
|
//#BPMCHANGE 126.651481628418
|
||||||
|
//100000000000300000000000500000000000000000000000,
|
||||||
|
//#BPMCHANGE 133.79866027832
|
||||||
|
//000000000000000000000000000000000000000000000000,
|
||||||
|
//#BPMCHANGE 134.100387573242
|
||||||
|
//008000000000000000000000000000000000000000000000,
|
||||||
|
//#BPMCHANGE 125.664978027344
|
||||||
|
//#SCROLL 1.01999998092651
|
||||||
|
//000000000000000000000000100000100000100000100000,
|
||||||
|
//#BPMCHANGE 127.921951293945
|
||||||
|
//#SCROLL 1
|
||||||
|
//200000000000000000200000200000000000000000000000,
|
||||||
|
//#BPMCHANGE 130.834686279297
|
||||||
|
//#SCROLL 0.980000019073486
|
||||||
|
//000000000000000000000000000000000000000000000000,
|
||||||
|
//#BPMCHANGE 131.710662841797
|
||||||
|
//#SCROLL 1
|
||||||
|
//#MEASURE 2/4
|
||||||
|
//000000000000000000000000,
|
||||||
|
//#BPMCHANGE 130.000137329102
|
||||||
|
//#MEASURE 4/4
|
||||||
|
//100000000000200000000000100000100100200000000000,
|
||||||
|
//700000000000000000000000008000000000100200000000,
|
||||||
|
//#GOGOSTART
|
||||||
|
//100000100100200000000000100000100100200000000000,
|
||||||
|
//100000100100200000000000000000200000000000200000,
|
||||||
|
//100000000000200000100100100000000000200000100100,
|
||||||
|
//100000000000200000100000100100100000100100100000,
|
||||||
|
//#MEASURE 2/4
|
||||||
|
//300000000000000000000000,
|
||||||
|
//#GOGOEND
|
||||||
|
//#MEASURE 4/4
|
||||||
|
//000000100100200000100100000000100100200000100100,
|
||||||
|
//000000100100200000100100100000100000100000100000,
|
||||||
|
//100000200000100100000000100000200000100100000000,
|
||||||
|
//100000200000100100000000100000100000100000100000,
|
||||||
|
//#MEASURE 2/4
|
||||||
|
//100100100000100100100000,
|
||||||
|
//#MEASURE 4/4
|
||||||
|
//100000000100100000200000100000000000000000000000,
|
||||||
|
//100100000000200200000000100100000000200200200000,
|
||||||
|
//100000000000200000000000100100200000000000000000,
|
||||||
|
//100100000000200200000000100100000000300000000000,
|
||||||
|
//#GOGOSTART
|
||||||
|
//100000000000200000100100100000000000200000100100,
|
||||||
|
//100000000000200000100000100100100000100100100000,
|
||||||
|
//100000100100200000000000100000100100200000000000,
|
||||||
|
//100000100100200000100000000000200000000000200000,
|
||||||
|
//#GOGOEND
|
||||||
|
//#MEASURE 2/4
|
||||||
|
//300000000000000000000000,
|
||||||
|
//#MEASURE 4/4
|
||||||
|
//100000000100100000000100100000000100100000200000,
|
||||||
|
//100000000100100000000100100000000100100000200000,
|
||||||
|
//100000000100100000000100100000000100100000200000,
|
||||||
|
//100000000100100000000000100000000100000000200000,
|
||||||
|
//100000000000200000000000100200100000200000000000,
|
||||||
|
//100000000000200000000000100200100000200000000000,
|
||||||
|
//000000000000000000000000200200200200200000000000,
|
||||||
|
//000000000000200200200200100000000000000000000000,
|
||||||
|
//100000200000100100100000100000200000100100100000,
|
||||||
|
//100000200000000000200000100000200000000000200000,
|
||||||
|
//100000200000100100100000100000200000100100100000,
|
||||||
|
//100000200000000000200000100000200000000000200000,
|
||||||
|
//100000200000100100100000100000200000100100100000,
|
||||||
|
//100000200000000000200000100000200000000000200000,
|
||||||
|
//100000200000100100100000100000200000100100100000,
|
||||||
|
//000000000000100100100000000000000000100100100100,
|
||||||
|
//100000000000000000000000100000000000100000000000,
|
||||||
|
//100100100100000000000000100100100100000000000000,
|
||||||
|
//200200200200000000000000200200200200000000000000,
|
||||||
|
//#MEASURE 2/4
|
||||||
|
//300000000000000000000000,
|
||||||
|
//#GOGOSTART
|
||||||
|
//#MEASURE 4/4
|
||||||
|
//100000100100200000000000100000100100200000000000,
|
||||||
|
//100000100100200000000000000000200000000000200000,
|
||||||
|
//100000000000200000100100100000000000200000100100,
|
||||||
|
//100000000000200000100000100100100000100100100000,
|
||||||
|
//#GOGOEND
|
||||||
|
//#MEASURE 2/4
|
||||||
|
//300000000000000000000000,
|
||||||
|
//#MEASURE 4/4
|
||||||
|
//000000100100200200100100000000100100200200100100,
|
||||||
|
//000000100100200200100100100000100000100000100000,
|
||||||
|
//100000200000100100000000100000200000100100000000,
|
||||||
|
//100000200000100100000000100000100000100000100000,
|
||||||
|
//#MEASURE 2/4
|
||||||
|
//100100100000100100100000,
|
||||||
|
//#MEASURE 4/4
|
||||||
|
//100000200100100000000100100000000100100000200000,
|
||||||
|
//100000200100100000000100100000000100100000200000,
|
||||||
|
//100000000000200000000000100200100000200000000000,
|
||||||
|
//100000000000200000000000100200100000200000000000,
|
||||||
|
//100000200100100000000100100000000100100000200000,
|
||||||
|
//100000200100100000000100100000000100100000200000,
|
||||||
|
//000000000000000000000000000000000000200000200000,
|
||||||
|
//100000000000100000000000100000100000000300000000,
|
||||||
|
//100000000100200000000000100200100000200000000000,
|
||||||
|
//100000000100200000000000100200100000200000000000,
|
||||||
|
//100000200100100000000100100000000100100000200000,
|
||||||
|
//100000200100100000000100100000000200200000200000,
|
||||||
|
//100000000100200000000000100200100000200000000000,
|
||||||
|
//100000000100200000000000100200100000100000000000,
|
||||||
|
//000000100000100100000000000000000000000000100000,
|
||||||
|
//100100000000000000000000000000100000000300000000,
|
||||||
|
//#GOGOSTART
|
||||||
|
//100000100100200000000000100000100100200000000000,
|
||||||
|
//100000100100200000000000100000000000300000000000,
|
||||||
|
//100000000000200000100100100000000000200000100100,
|
||||||
|
//100000000000200000100100100000000000000000000000,
|
||||||
|
//100000100100100100000100100000000000300000000000,
|
||||||
|
//100000000000200000100000100000000000300000000000,
|
||||||
|
//100000100100100100000100100000000000300000000000,
|
||||||
|
//100000100100200200000200100000000000000000000000,
|
||||||
|
//#GOGOEND
|
||||||
|
//000000000000000000000000000000000000000000000000,
|
||||||
|
//000000000000000000000000000000000000000000000000,
|
||||||
|
//#END
|
||||||
|
//
|
||||||
|
//BALLOON:8
|
||||||
|
//SCOREINIT:690
|
||||||
|
//SCOREDIFF:90
|
||||||
|
//
|
||||||
|
//#START P2
|
||||||
|
//600000000008000000000000300000000000000000000000,
|
||||||
|
//#BPMCHANGE 126.651481628418
|
||||||
|
//100000000000300000000000500000000000000000000000,
|
||||||
|
//#BPMCHANGE 133.79866027832
|
||||||
|
//000000000000000000000000000000000000000000000000,
|
||||||
|
//#BPMCHANGE 134.100387573242
|
||||||
|
//008000000000000000000000000000000000000000000000,
|
||||||
|
//#BPMCHANGE 125.664978027344
|
||||||
|
//#SCROLL 1.01999998092651
|
||||||
|
//000000000000000000000000000000000000000000000000,
|
||||||
|
//#BPMCHANGE 127.921951293945
|
||||||
|
//#SCROLL 1
|
||||||
|
//000000000000000000000000000000000000000000000000,
|
||||||
|
//#BPMCHANGE 130.834686279297
|
||||||
|
//#SCROLL 0.980000019073486
|
||||||
|
//100000000000000000000000100000100000100000100000,
|
||||||
|
//#BPMCHANGE 131.710662841797
|
||||||
|
//#SCROLL 1
|
||||||
|
//#MEASURE 2/4
|
||||||
|
//200000000000200000200000,
|
||||||
|
//#BPMCHANGE 130.000137329102
|
||||||
|
//#MEASURE 4/4
|
||||||
|
//100000000000200000000000100000100100200000000000,
|
||||||
|
//700000000000000000000000008000000000100200000000,
|
||||||
|
//#GOGOSTART
|
||||||
|
//100000000000200000100100100000000000200000100100,
|
||||||
|
//100000000000200000100000100100100000100100100000,
|
||||||
|
//100000100100200000000000100000100100200000000000,
|
||||||
|
//100000100100200000000000000000200000000000200000,
|
||||||
|
//#MEASURE 2/4
|
||||||
|
//300000000000000000000000,
|
||||||
|
//#GOGOEND
|
||||||
|
//#MEASURE 4/4
|
||||||
|
//100000200000100100000000100000200000100100000000,
|
||||||
|
//100000200000100100000000100000100000100000100000,
|
||||||
|
//000000100100200000100100000000100100200000100100,
|
||||||
|
//000000100100200000100100100000100000100000100000,
|
||||||
|
//#MEASURE 2/4
|
||||||
|
//100100100000100100100000,
|
||||||
|
//#MEASURE 4/4
|
||||||
|
//100000000000200000000000100100200000000000000000,
|
||||||
|
//100100000000200200000000100100000000200200200000,
|
||||||
|
//100000000100100000200000100000000000000000000000,
|
||||||
|
//100100000000200200000000100100000000300000000000,
|
||||||
|
//#GOGOSTART
|
||||||
|
//100000100100200000000000100000100100200000000000,
|
||||||
|
//100000100100200000000000000000200000000000200000,
|
||||||
|
//100000000000200000100000100000000000200000100000,
|
||||||
|
//100000000000200000100000100100100000100100100000,
|
||||||
|
//#GOGOEND
|
||||||
|
//#MEASURE 2/4
|
||||||
|
//300000000000000000000000,
|
||||||
|
//#MEASURE 4/4
|
||||||
|
//100000000000200000000000100200100000200000000000,
|
||||||
|
//100000000000200000000000100200100000200000000000,
|
||||||
|
//100000000000200000000000100200100000200000000000,
|
||||||
|
//100000000000200000000000100000000100000000200000,
|
||||||
|
//100000000100100000000100100000000100100000200000,
|
||||||
|
//100000000100100000000100100000000100100000200000,
|
||||||
|
//100100100100100000000000000000000000000000100100,
|
||||||
|
//100100100000000000000000000000000000000000000000,
|
||||||
|
//100000200000000000200000100000200000000000200000,
|
||||||
|
//100000200000100100100000100000200000100100100000,
|
||||||
|
//100000200000000000200000100000200000000000200000,
|
||||||
|
//100000200000100100100000100100100000100100100000,
|
||||||
|
//100000200000000000200000100000200000000000200000,
|
||||||
|
//100000200000100100100000100000200000100100100000,
|
||||||
|
//100000200000000000200000100000200000000000200000,
|
||||||
|
//100100100000000000000000100100100100000000000000,
|
||||||
|
//100000000000000000000000100000000000100000000000,
|
||||||
|
//000000000000200200200200000000000000200200200200,
|
||||||
|
//000000000000100100100100000000000000100100100000,
|
||||||
|
//#MEASURE 2/4
|
||||||
|
//300000000000000000000000,
|
||||||
|
//#GOGOSTART
|
||||||
|
//#MEASURE 4/4
|
||||||
|
//100000000000200000100100100000000000200000100100,
|
||||||
|
//100000000000200000100000100100100000100100100000,
|
||||||
|
//100000100100200000000000100000100100200000000000,
|
||||||
|
//100000100100200000100000100100100000100100100000,
|
||||||
|
//#GOGOEND
|
||||||
|
//#MEASURE 2/4
|
||||||
|
//300000000000000000000000,
|
||||||
|
//#MEASURE 4/4
|
||||||
|
//100000200000100100000000100000200000100100000000,
|
||||||
|
//100000200000100100000000100000100000100000100000,
|
||||||
|
//000000100100200200100100000000100100200200100100,
|
||||||
|
//000000100100200200100100100000100000100000100000,
|
||||||
|
//#MEASURE 2/4
|
||||||
|
//100100100000100100100000,
|
||||||
|
//#MEASURE 4/4
|
||||||
|
//100000000000200000000000100200100000200000000000,
|
||||||
|
//100000000000200000000000100200100000200000000000,
|
||||||
|
//100000200100100000000100100000000100100000200000,
|
||||||
|
//100000200100100000000100100000000200200000200000,
|
||||||
|
//100000000000200000000000100200100000200000000000,
|
||||||
|
//100000000000200000000000100200100000200000000000,
|
||||||
|
//000000000000000000000000000000000000200000200000,
|
||||||
|
//100000000000100000000000100000100000000300000000,
|
||||||
|
//100000200100100000000100100000000100100000200000,
|
||||||
|
//100000200100100000000100100000000100100000200000,
|
||||||
|
//100000000100200000000000100200100000200000000000,
|
||||||
|
//100000000100200000000000100200100000200000000000,
|
||||||
|
//100000200100100000000100100000000100100000200000,
|
||||||
|
//100000200100100000000100100000000100100000200000,
|
||||||
|
//000000000000000000000000100000100100000000000000,
|
||||||
|
//000000000000100000100100000000100000000300000000,
|
||||||
|
//#GOGOSTART
|
||||||
|
//100000000000200000100100100000000000200000100100,
|
||||||
|
//100000000000200000100100100000000000000000000000,
|
||||||
|
//100000100100200000000000100000100100200000000000,
|
||||||
|
//100000100100200000000000100000000000300000000000,
|
||||||
|
//100000000000200000100000100000000000300000000000,
|
||||||
|
//100000100100100100000100100000000000300000000000,
|
||||||
|
//100000000000200000100000100000000000300000000000,
|
||||||
|
//100000100100200200000200100000000000000000000000,
|
||||||
|
//#GOGOEND
|
||||||
|
//000000000000000000000000000000000000000000000000,
|
||||||
|
//000000000000000000000000000000000000000000000000,
|
||||||
|
//#END
|
||||||
|
|
||||||
|
COURSE:Oni
|
||||||
|
LEVEL:8
|
||||||
|
BALLOON:
|
||||||
|
SCOREINIT:410
|
||||||
|
SCOREDIFF:107
|
||||||
|
|
||||||
|
#START
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
#BPMCHANGE 126.651481628418
|
||||||
|
100000000000100000000000500000000000000000000000,
|
||||||
|
#BPMCHANGE 133.79866027832
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
#BPMCHANGE 134.100387573242
|
||||||
|
008000000000000000000000000000000000000000000000,
|
||||||
|
#BPMCHANGE 125.664978027344
|
||||||
|
#SCROLL 1.01999998092651
|
||||||
|
000000000000000000000000100000100000100000100000,
|
||||||
|
#BPMCHANGE 127.921951293945
|
||||||
|
#SCROLL 1
|
||||||
|
200000000000000000200000200000000000000000000000,
|
||||||
|
#BPMCHANGE 130.834686279297
|
||||||
|
#SCROLL 0.980000019073486
|
||||||
|
000000000000000000000000100000100000100000100000,
|
||||||
|
#BPMCHANGE 131.710662841797
|
||||||
|
#SCROLL 1
|
||||||
|
#MEASURE 2/4
|
||||||
|
200000000000200000200000,
|
||||||
|
#BPMCHANGE 130.000137329102
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000100100200000000000100200100100200000000000,
|
||||||
|
100100100200000100000100000100000100100200000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000100100200100000100100000100100200100000100,
|
||||||
|
100000100100200100000100100100200000100100200000,
|
||||||
|
100000100100200100000100100000100100200100000100,
|
||||||
|
100000100100200100000100100100200000100100200000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
100000100100100100100100,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 4/4
|
||||||
|
000000100100200000100100000000100100200000100100,
|
||||||
|
000000100100200000100100100000100000100000100000,
|
||||||
|
000000100100200000100100000000100100200000100100,
|
||||||
|
000000100100200000100100100000100000100000100000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
100000100000200200100100,
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000000100100100200200100000000000000000000000,
|
||||||
|
100100000000200200000000100100000000200200100000,
|
||||||
|
100000000100100100200200100000000000000000000000,
|
||||||
|
100100000000200200000000100100100000300000000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000100100200100000100100000100100200100000100,
|
||||||
|
100000100100200100000100100100200000100100200000,
|
||||||
|
100000100100200100000100100000100100200100000100,
|
||||||
|
100000100100200100000100100100200000100100200000,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 2/4
|
||||||
|
100000200200200200200200,
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000000100100000000100100000000100100000200000,
|
||||||
|
100000000100100000000100100000000100100200200100,
|
||||||
|
100000000100100000000100100000000100100000200000,
|
||||||
|
100000000100100000000100100200200100100200200100,
|
||||||
|
100000000100100000000100100000000100100000200000,
|
||||||
|
100000000100100000000100100000000100100200200100,
|
||||||
|
100000000100100000000100100200200100100000100200,
|
||||||
|
200100100000100200200100100000000000000000000000,
|
||||||
|
100000200000100100200000100000200000100100200000,
|
||||||
|
100000200000100100200000100000200000100100200000,
|
||||||
|
100000200000100100200000100000200000100100200000,
|
||||||
|
100000200000100100200000100100200100100100200100,
|
||||||
|
100000200000100100200000100000200000100100200000,
|
||||||
|
100000200000100100200000100000200000100100200000,
|
||||||
|
100000200000100100200000100000200000100100200000,
|
||||||
|
100100200100100100200100100100100100100100100100,
|
||||||
|
100000000000000000000000100000000000100000000000,
|
||||||
|
100000100000200000100200100000100000200000100200,
|
||||||
|
100000100000200000100200100200100000100100100000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
300000000000000000000000,
|
||||||
|
#GOGOSTART
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000100100200100000100100000100100200100000100,
|
||||||
|
100000100100200100000100100100200000100100200000,
|
||||||
|
100000100100200100000100100000100100200100000100,
|
||||||
|
100000100100200100000100100100200000100100200000,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 2/4
|
||||||
|
100000100100100100100100,
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000100100200000100100100000100100200000100100,
|
||||||
|
100000100100200000100100100000100000100000100000,
|
||||||
|
100000100100200200100100100000100100200200100100,
|
||||||
|
100000100100200200100100100000100000100000100000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
100000100000100100100100,
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000200100100200000100100200000100100000200100,
|
||||||
|
100000200100100200000100100200000100100000200100,
|
||||||
|
100000200100100200000100100200000100100000200100,
|
||||||
|
100000200100100200000100100200000200200000200200,
|
||||||
|
100000200100100200000100100200000100100000200100,
|
||||||
|
100000200100100200000100100200000100100000200100,
|
||||||
|
200000200000000200000200000200000000200000200000,
|
||||||
|
100200000200200200000200200200000200000300000000,
|
||||||
|
100000200100100200000100100200000100100000200100,
|
||||||
|
100000200100100200000100100200000100100000200100,
|
||||||
|
100000200100100200000100100200000100100000200100,
|
||||||
|
100000200100100200000100100200000200000200100100,
|
||||||
|
100000200100100200000100100200000100100000200100,
|
||||||
|
100000200100100200000100100200000100100000200100,
|
||||||
|
000000200000100100000000200000100100000000200000,
|
||||||
|
100100000000200000100100000000100000000300000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000100100200100000100100000100100200100000100,
|
||||||
|
100000100100200100000100100000000000300000000000,
|
||||||
|
100000100100200100000100100000100100200100000100,
|
||||||
|
100000100100200100000100100000000000300000000000,
|
||||||
|
100000100100200100000100100000000000300000000000,
|
||||||
|
100000100100200100000100100000000000300000000000,
|
||||||
|
100000100100200100000100100000000000300000000000,
|
||||||
|
100000100100100100000100100000000000000000000000,
|
||||||
|
#GOGOEND
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
#END
|
||||||
|
|
||||||
|
COURSE:Hard
|
||||||
|
LEVEL:7
|
||||||
|
BALLOON:8
|
||||||
|
SCOREINIT:430
|
||||||
|
SCOREDIFF:105
|
||||||
|
|
||||||
|
#START
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
#BPMCHANGE 126.651481628418
|
||||||
|
100000000000100000000000500000000000000000000000,
|
||||||
|
#BPMCHANGE 133.79866027832
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
#BPMCHANGE 134.100387573242
|
||||||
|
008000000000000000000000000000000000000000000000,
|
||||||
|
#BPMCHANGE 125.664978027344
|
||||||
|
#SCROLL 1.01999998092651
|
||||||
|
000000000000000000000000100000100000100000100000,
|
||||||
|
#BPMCHANGE 127.921951293945
|
||||||
|
#SCROLL 1
|
||||||
|
200000000000000000200000200000000000000000000000,
|
||||||
|
#BPMCHANGE 130.834686279297
|
||||||
|
#SCROLL 0.980000019073486
|
||||||
|
100000000000000000000000100000100000100000100000,
|
||||||
|
#BPMCHANGE 131.710662841797
|
||||||
|
#SCROLL 1
|
||||||
|
#MEASURE 2/4
|
||||||
|
200000000000200000200000,
|
||||||
|
#BPMCHANGE 130.000137329102
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000000000200000000000100000100100200000000000,
|
||||||
|
700000000000000000000000008000000000100200000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000100100200000000000100000100100200000000000,
|
||||||
|
100000100100200000000000100100100000100100100000,
|
||||||
|
100000100100200000000000100000100100200000000000,
|
||||||
|
100000100100200000000000100100100000100100100000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
300000000000000000000000,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 4/4
|
||||||
|
000000100100200000100100000000100100200000100100,
|
||||||
|
000000100100200000100100100000100000100000100000,
|
||||||
|
000000100100200000100100000000100100200000100100,
|
||||||
|
000000100100200000100100100000100000100000100000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
100000100000100100100000,
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000000100100000200000100000000000000000000000,
|
||||||
|
100100000000200200000000100100000000200200200000,
|
||||||
|
100000000100100000200000100000000000000000000000,
|
||||||
|
100100000000200200000000100100100000300000000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000100100200000000000100000100100200000000000,
|
||||||
|
100000100100200000000000100100100000100100100000,
|
||||||
|
100000100100200000000000100000100100200000000000,
|
||||||
|
100000100100200000000000100100100000100100100000,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 2/4
|
||||||
|
300000000000000000000000,
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000000100100000000100100000000100100000200000,
|
||||||
|
100000000100100000000100100000000100100000200000,
|
||||||
|
100000000100100000000100100000000100100000200000,
|
||||||
|
100000000100100000000000200000000200000000200000,
|
||||||
|
100000000100100000000100100000000100100000200000,
|
||||||
|
100000000100100000000100100000000100100000200000,
|
||||||
|
100100100100100000000000200200200200200000100100,
|
||||||
|
100100100000200200200200100000000000000000000000,
|
||||||
|
100000200000100100100000100000200000100100100000,
|
||||||
|
100000200000100100100000100000200000100100100000,
|
||||||
|
100000200000100100100000100000200000100100100000,
|
||||||
|
100000200000100100100000100100100000100100100000,
|
||||||
|
100000200000100100100000100000200000100100100000,
|
||||||
|
100000200000100100100000100000200000100100100000,
|
||||||
|
100000200000100100100000100000200000100100100000,
|
||||||
|
100100100000100100100000100100100100100100100100,
|
||||||
|
100000000000000000000000100000000000100000000000,
|
||||||
|
100000100000200000000200100000100000200000000200,
|
||||||
|
100000100000200000000200100100100000100100100000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
300000000000000000000000,
|
||||||
|
#GOGOSTART
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000100100200000000000100000100100200000000000,
|
||||||
|
100000100100200000000000100100100000100100100000,
|
||||||
|
100000100100200000000000100000100100200000000000,
|
||||||
|
100000100100200000000000100100100000100100100000,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 2/4
|
||||||
|
300000000000000000000000,
|
||||||
|
#MEASURE 4/4
|
||||||
|
000000100100200000100100000000100100200000100100,
|
||||||
|
000000100100200000100100100000100000100000100000,
|
||||||
|
000000100100200200100100000000100100200200100100,
|
||||||
|
000000100100200200100100100000100000100000100000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
300000000000000000000000,
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000200100100000000100100000000100100000200000,
|
||||||
|
100000200100100000000100100000000100100000200000,
|
||||||
|
100000200100100000000100100000000100100000200000,
|
||||||
|
100000200100100000000100100000000200200000200000,
|
||||||
|
100000200100100000000100100000000100100000200000,
|
||||||
|
100000200100100000000100100000000100100000200000,
|
||||||
|
200000200000000200000200000200000000200000200000,
|
||||||
|
100000000000100000000000100000100000000300000000,
|
||||||
|
100000200100100000000100100000000100100000200000,
|
||||||
|
100000200100100000000100100000000100100000200000,
|
||||||
|
100000200100100000000100100000000100100000200000,
|
||||||
|
100000200100100000000100100000000200200000200000,
|
||||||
|
100000200100100000000100100000000100100000200000,
|
||||||
|
100000200100100000000100100000000100100000200000,
|
||||||
|
000000100000100100000000100000100100000000100000,
|
||||||
|
100100000000100000100100000000100000000300000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000100100200000000000100000100100200000000000,
|
||||||
|
100000100100200000000000100000000000300000000000,
|
||||||
|
100000100100200000000000100000100100200000000000,
|
||||||
|
100000100100200000000000100000000000300000000000,
|
||||||
|
100000100100100100000100100000000000300000000000,
|
||||||
|
100000100100200200000200200000000000300000000000,
|
||||||
|
100000100100100100000100100000000000300000000000,
|
||||||
|
100000100100200200000200100000000000000000000000,
|
||||||
|
#GOGOEND
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
#END
|
||||||
|
|
||||||
|
COURSE:Normal
|
||||||
|
LEVEL:5
|
||||||
|
BALLOON:
|
||||||
|
SCOREINIT:720
|
||||||
|
SCOREDIFF:235
|
||||||
|
|
||||||
|
#START
|
||||||
|
300000000000000000000000300000000000000000000000,
|
||||||
|
#BPMCHANGE 126.651481628418
|
||||||
|
100000000000100000000000500000000000000000000000,
|
||||||
|
#BPMCHANGE 133.79866027832
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
#BPMCHANGE 134.100387573242
|
||||||
|
008000000000000000000000000000000000000000000000,
|
||||||
|
#BPMCHANGE 125.664978027344
|
||||||
|
#SCROLL 1.01999998092651
|
||||||
|
100000000000000000000000200000000000000000000000,
|
||||||
|
#BPMCHANGE 127.921951293945
|
||||||
|
#SCROLL 1
|
||||||
|
100000100000000000000000200000000000000000000000,
|
||||||
|
#BPMCHANGE 130.834686279297
|
||||||
|
#SCROLL 0.980000019073486
|
||||||
|
100000000000000000000000200000000000000000000000,
|
||||||
|
#BPMCHANGE 131.710662841797
|
||||||
|
#SCROLL 1
|
||||||
|
#MEASURE 2/4
|
||||||
|
100000100000000000000000,
|
||||||
|
#BPMCHANGE 130.000137329102
|
||||||
|
#MEASURE 4/4
|
||||||
|
500000000000000000000000000000000000000000000008,
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000100000100000000000100000000000100000000000,
|
||||||
|
100000000000100000100000100000000000000000000000,
|
||||||
|
100000100000100000000000100000000000100000000000,
|
||||||
|
100000000000100000100000100000000000000000000000,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 2/4
|
||||||
|
000000000000000000000000,
|
||||||
|
#MEASURE 4/4
|
||||||
|
000000000000100100000000000000000000100100000000,
|
||||||
|
000000000000000000000000100000100000100000100000,
|
||||||
|
000000000000200200000000000000000000200200000000,
|
||||||
|
000000000000000000000000100000100000100000100000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
000000000000000000000000,
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000000000000000000000200000000000000000000000,
|
||||||
|
100100000000000000000000200200000000000000000000,
|
||||||
|
100000000000000000000000200000000000000000000000,
|
||||||
|
100100000000000000000000200200000000000000000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000100000100000000000100000000000100000000000,
|
||||||
|
100000000000100000100000100000000000000000000000,
|
||||||
|
100000100000100000000000100000000000100000000000,
|
||||||
|
100000000000100000100000100000000000000000000000,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 2/4
|
||||||
|
000000000000000000000000,
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000000000000000000000100100000000000000000000,
|
||||||
|
100000000000000000000000100100000000000000000000,
|
||||||
|
100000000000000000000000200200000000000000100100,
|
||||||
|
100000000100000000000000000000000000000000000000,
|
||||||
|
100000000000000000000000100100000000000000000000,
|
||||||
|
100000000000000000000000100100000000000000000000,
|
||||||
|
100000000000000000000000100000100000100000000000,
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
100000100000000000200000000000000000000000000000,
|
||||||
|
100000000000200000000000000000000000000000000000,
|
||||||
|
100000100000000000000000100000100000000000000000,
|
||||||
|
100000100000000000000000000000000000000000000000,
|
||||||
|
100000100000000000200000000000000000000000000000,
|
||||||
|
100000000000200000000000000000000000000000000000,
|
||||||
|
100000100000000000000000100000100000000000000000,
|
||||||
|
500000000000000000000000000000000000000000000008,
|
||||||
|
000000000000000000000000300000000000300000000000,
|
||||||
|
100000000000200000000000000000000000000000000000,
|
||||||
|
100000000000200000000000100000000000000000000000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
000000000000000000000000,
|
||||||
|
#GOGOSTART
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000100000100000000000100000100000100000000000,
|
||||||
|
100000000000100000100000100000000000000000000000,
|
||||||
|
100000100000100000000000100000100000100000000000,
|
||||||
|
100000000000100000100000100000000000000000000000,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 2/4
|
||||||
|
000000000000000000000000,
|
||||||
|
#MEASURE 4/4
|
||||||
|
000000000000100100000000000000000000100100000000,
|
||||||
|
000000000000000000000000100000100000100000100000,
|
||||||
|
000000000000100100000000000000000000100100000000,
|
||||||
|
000000000000000000000000100000100000100000100000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
000000000000000000000000,
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000100000000000000000100000000000000000000000,
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000100000000000000000100000000000000000000000,
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
200000000000200000000000200000000000000000000000,
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
100000000000100000000000100000100000000000000000,
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000100000000000000000200000000000000000000000,
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000100000000000000000200000000000000000000000,
|
||||||
|
100000000000200000000000100000000000200000000000,
|
||||||
|
100000000000200000000000100000000000200000000000,
|
||||||
|
100000000000000000000000100000000100000000100000,
|
||||||
|
000100000000100000000000000000000000000000000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000100000100000000000100000100000100000000000,
|
||||||
|
100000000000100000100000100000000000000000000000,
|
||||||
|
100000100000100000000000100000100000100000000000,
|
||||||
|
100000000000100000100000100000000000000000000000,
|
||||||
|
100000100000100000000000100000000000300000000000,
|
||||||
|
100000100000100000000000100000000000300000000000,
|
||||||
|
100000100000100000000000100000000000300000000000,
|
||||||
|
100000100000100000000000300000000000000000000000,
|
||||||
|
#GOGOEND
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
#END
|
||||||
|
|
||||||
|
COURSE:Easy
|
||||||
|
LEVEL:4
|
||||||
|
BALLOON:10
|
||||||
|
SCOREINIT:650
|
||||||
|
SCOREDIFF:245
|
||||||
|
|
||||||
|
#START
|
||||||
|
300000000000000000000000300000000000000000000000,
|
||||||
|
#BPMCHANGE 126.651481628418
|
||||||
|
100000000000100000000000500000000000000000000000,
|
||||||
|
#BPMCHANGE 133.79866027832
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
#BPMCHANGE 134.100387573242
|
||||||
|
008000000000000000000000000000000000000000000000,
|
||||||
|
#BPMCHANGE 125.664978027344
|
||||||
|
#SCROLL 1.01999998092651
|
||||||
|
100000000000000000000000200000000000000000000000,
|
||||||
|
#BPMCHANGE 127.921951293945
|
||||||
|
#SCROLL 1
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
#BPMCHANGE 130.834686279297
|
||||||
|
#SCROLL 0.980000019073486
|
||||||
|
100000000000000000000000200000000000000000000000,
|
||||||
|
#BPMCHANGE 131.710662841797
|
||||||
|
#SCROLL 1
|
||||||
|
#MEASURE 2/4
|
||||||
|
100000000000000000000000,
|
||||||
|
#BPMCHANGE 130.000137329102
|
||||||
|
#MEASURE 4/4
|
||||||
|
500000000000000000000000000000000000000000000008,
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000000000100000000000100000000000000000000000,
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000000000100000000000100000000000000000000000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
000000000000000000000000,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000000000000000000000300000000000000000000000,
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000000000000000000000300000000000000000000000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
000000000000000000000000,
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000000000000000000000200000000000000000000000,
|
||||||
|
100000000000100000000000100000000000000000000000,
|
||||||
|
100000000000000000000000200000000000000000000000,
|
||||||
|
100000000000100000000000100000000000000000000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000000000100000000000100000000000000000000000,
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000000000100000000000100000000000000000000000,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 2/4
|
||||||
|
000000000000000000000000,
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000000000000000000000100100000000000000000000,
|
||||||
|
100000000000000000000000100100000000000000000000,
|
||||||
|
100000000000000000000000100100000000000000000000,
|
||||||
|
100000000000000000000000000000000000000000000000,
|
||||||
|
100000000000000000000000100100000000000000000000,
|
||||||
|
100000000000000000000000100100000000000000000000,
|
||||||
|
100000000000000000000000700000000000000000000000,
|
||||||
|
000000000000000000000000000080000000000000000000,
|
||||||
|
100000000000000000000000100000100000000000000000,
|
||||||
|
100000000000100000000000000000000000000000000000,
|
||||||
|
100000000000000000000000100000100000000000000000,
|
||||||
|
100000000000100000000000000000000000000000000000,
|
||||||
|
100000000000000000000000100000100000000000000000,
|
||||||
|
100000000000100000000000000000000000000000000000,
|
||||||
|
100000100000000000000000100000100000000000000000,
|
||||||
|
500000000000000000000000000000000000000000000008,
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000000000100000000000100000000000100000000000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
000000000000000000000000,
|
||||||
|
#GOGOSTART
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000000000100000000000100000000000000000000000,
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000000000100000000000100000000000000000000000,
|
||||||
|
#GOGOEND
|
||||||
|
#MEASURE 2/4
|
||||||
|
000000000000000000000000,
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000000000000000000000300000000000000000000000,
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000000000000000000000300000000000000000000000,
|
||||||
|
#MEASURE 2/4
|
||||||
|
000000000000000000000000,
|
||||||
|
#MEASURE 4/4
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000100000000000000000100000000000000000000000,
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000100000000000000000100000000000000000000000,
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
200000000000200000000000200000000000000000000000,
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
100000000000100000000000100000100000000000000000,
|
||||||
|
100000000000000000000000000000000000000000000000,
|
||||||
|
100000100000000000000000200000000000000000000000,
|
||||||
|
100000000000000000000000000000000000000000000000,
|
||||||
|
100000100000000000000000200000000000000000000000,
|
||||||
|
100000000000200000000000100000000000000000000000,
|
||||||
|
100000000000200000000000100000000000000000000000,
|
||||||
|
100000000000000000000000500000000000000000000000,
|
||||||
|
000000000000000000000000000008000000000000000000,
|
||||||
|
#GOGOSTART
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000000000100000000000100000000000000000000000,
|
||||||
|
100000000000000000000000100000000000000000000000,
|
||||||
|
100000000000100000000000100000000000000000000000,
|
||||||
|
100000000000100000000000100000000000000000000000,
|
||||||
|
100000000000100000000000100000000000000000000000,
|
||||||
|
100000000000100000000000100000000000000000000000,
|
||||||
|
100000000000100000000000300000000000000000000000,
|
||||||
|
#GOGOEND
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
000000000000000000000000000000000000000000000000,
|
||||||
|
#END
|
BIN
testing/data/genpe.zip
Normal file
BIN
testing/data/genpe.zip
Normal file
Binary file not shown.
@ -12,6 +12,7 @@ from tja2fumen.constants import COURSE_IDS, NORMALIZE_COURSE, simpleHeaders, byt
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('id_song', [
|
@pytest.mark.parametrize('id_song', [
|
||||||
|
pytest.param('genpe'),
|
||||||
pytest.param('gimcho'),
|
pytest.param('gimcho'),
|
||||||
pytest.param('imcanz'),
|
pytest.param('imcanz'),
|
||||||
pytest.param('clsca'),
|
pytest.param('clsca'),
|
||||||
@ -84,15 +85,28 @@ def test_converted_tja_vs_cached_fumen(id_song, tmp_path, entry_point):
|
|||||||
assert_song_property(co_measure, ca_measure, 'fumenOffsetStart', i_measure, abs=0.15)
|
assert_song_property(co_measure, ca_measure, 'fumenOffsetStart', i_measure, abs=0.15)
|
||||||
assert_song_property(co_measure, ca_measure, 'gogo', i_measure)
|
assert_song_property(co_measure, ca_measure, 'gogo', i_measure)
|
||||||
assert_song_property(co_measure, ca_measure, 'barline', i_measure)
|
assert_song_property(co_measure, ca_measure, 'barline', i_measure)
|
||||||
assert_song_property(co_measure, ca_measure, 'branchInfo', i_measure)
|
|
||||||
|
# NB: KAGEKIYO's fumen has some strange details that can't be replicated using the TJA charting format.
|
||||||
|
# So, for now, we use a special case to skip checking A) notes for certain measures and B) branchInfo
|
||||||
|
if id_song == 'genpe':
|
||||||
|
# A) The 2/4 measures in the Ura of KAGEKIYO's official Ura fumen don't match the wikiwiki.jp/TJA
|
||||||
|
# charts. In the official fumen, the note ms offsets of branches 5/12/17/etc. go _past_ the duration of
|
||||||
|
# the measure. This behavior is impossible to represent using the TJA format, so we skip checking notes
|
||||||
|
# for these measures, since the rest of the measures have perfect note ms offsets anyway.
|
||||||
|
if i_difficult_id == "x" and i_measure in [5, 6, 12, 13, 17, 18, 26, 27, 46, 47, 51, 52, 56, 57]:
|
||||||
|
continue
|
||||||
|
# B) The branching condition for KAGEKIYO is very strange (accuracy for the 7 big notes in the song)
|
||||||
|
# So, we only test the branchInfo bytes for non-KAGEKIYO songs:
|
||||||
|
else:
|
||||||
|
assert_song_property(co_measure, ca_measure, 'branchInfo', i_measure)
|
||||||
|
|
||||||
# 3b. Check measure notes
|
# 3b. Check measure notes
|
||||||
for i_branch in ['normal', 'advanced', 'master']:
|
for i_branch in ['normal', 'advanced', 'master']:
|
||||||
co_branch = co_measure.branches[i_branch]
|
co_branch = co_measure.branches[i_branch]
|
||||||
ca_branch = ca_measure.branches[i_branch]
|
ca_branch = ca_measure.branches[i_branch]
|
||||||
# NB: We check for branching before checking speed as fumens store speed changes even for empty branches
|
# NB: We only check speed for non-empty branches, as fumens store speed changes even for empty branches
|
||||||
if co_branch.length == 0:
|
if co_branch.length != 0:
|
||||||
continue
|
assert_song_property(co_branch, ca_branch, 'speed', i_measure, i_branch)
|
||||||
assert_song_property(co_branch, ca_branch, 'speed', i_measure, i_branch)
|
|
||||||
# NB: We could assert that len(notes) is the same for both songs, then iterate through zipped notes.
|
# NB: We could assert that len(notes) is the same for both songs, then iterate through zipped notes.
|
||||||
# But, if there is a mismatched number of notes, we want to know _where_ it occurs. So, we let the
|
# But, if there is a mismatched number of notes, we want to know _where_ it occurs. So, we let the
|
||||||
# comparison go on using the max length of both branches until something else fails.
|
# comparison go on using the max length of both branches until something else fails.
|
||||||
|
Loading…
Reference in New Issue
Block a user