Open VortexCoyote opened 3 years ago
Keep in mind for essential purposes (metadata, bpms, notedata) .ssc
is the same as .sm
- the distinction is basically just that ssc has additional features. That being said, largely usable basic sm support would simply involve support for parsing notedata (including fake taps, "roll" hold subtypes, and mines) and the bpm parsing.
The ssc format offers chart-specific bpms (all timing data) and audio, unlike the sm format which forces all charts to use the same bpms and audio.
You may as well also throw in .dwi
support since the main difference between dwi and sm is the notedata format. The song offset is called #GAP
and is in milliseconds rather than seconds. These files also only have 1 bpm.
Keysounds in sm/ssc files involves an interesting layout of the keysounds within the noterows: in a given noterow of 4 columns, normally you expect a single tap on column 3 to be 0010
. If that tap was mapped to a keysound at index 6 (keysounds are stored in a 0-indexed array #KEYSOUNDS
) then the noterow would be 001[6]0
Stops, delays, and time signature support was present in .sm but for the most part the only one that is used is stops. Time signatures as we know it are basically nonfunctional in stepmania and nobody uses them. The ssc format throws on top of it some features familiar to other games like forced scroll speeds or warps. Warps are present in the sm format as negative or 0 bpms. At this time I'm not aware of how to convert negative bpm to a warp.
All 3 of these filetypes use a format called MSDfile
(unrelated to Etterna MSD) which defines how the metadata is read in each file generically.
Add functionality to parse and export stepmania files. This might require some rethinking in what modules should do what, since the stepmania file format already includes things such as beat division for notes.