Simon Bruder
def3b7269d
mini_parser: Use custom error for EOF
2020-08-07 13:05:03 +02:00
Simon Bruder
ee84247a1d
Use custom error type for ddr2osu
2020-08-07 13:01:06 +02:00
Simon Bruder
a7efcb2033
Use rust 2018 idioms
2020-08-07 12:45:13 +02:00
Simon Bruder
73dea88f7d
Refactor osu beatmap
...
It now uses the builder pattern and has tests and some documentation.
2020-08-07 12:37:57 +02:00
Simon Bruder
3ab224414f
ddr::ssq: Fix difficulty display
...
Tests don’t help if they are wrong
2020-07-25 14:08:25 +02:00
Simon Bruder
f1d460cffe
ddr::ssq::Difficulty: Refactor and rename to Level
...
* New name reflects contents better
* Uses explicit functions instead of Into for only converting the
difficulty
* Uses errors instead of defaults for invalid values
* Difficulty mapping is separate function
* Simplified tests
2020-07-23 15:36:22 +02:00
Simon Bruder
161f472a19
ddr::ssq::Difficulty: Fix comment for to_level
2020-07-23 13:26:54 +02:00
Simon Bruder
e70d9f6cea
ddr::ssq::Row: Test Into<Vec<bool>>
2020-07-23 13:10:39 +02:00
Simon Bruder
087c190e63
ddr::ssq::Row: Test intersection for different player counts
2020-07-23 12:53:53 +02:00
Simon Bruder
240257197a
ddr::ssq::Row: Test negative intersection results
2020-07-23 12:53:40 +02:00
Simon Bruder
7700e511f9
ddr::ssq::Row: Return error on invalid player count
2020-07-23 12:37:29 +02:00
Simon Bruder
38180cfd0a
Add multithreading for batch conversion
2020-07-10 14:07:25 +02:00
Simon Bruder
dad3a7ff13
Refactor arc parsing and add internal tests for it
2020-07-09 14:47:53 +02:00
Simon Bruder
0ad0d503a2
Remove U3 type for osu beatmap
...
It did not do any checking and looked weird.
What *is* the right way to ensure the value only has 3 bytes while still
allowing the user to pass a normal primitive or newtype wrapper around a
primitive (and not e.g. a [bool; 3])?
2020-07-08 23:55:52 +02:00
Simon Bruder
95f4a4c60c
Deduplicate bitflags/bitarray_to_byte
2020-07-08 23:55:04 +02:00
Simon Bruder
f66508eef7
Add tests for mini parser
2020-07-08 23:40:13 +02:00
Simon Bruder
f9c0140100
Add documentation and tests for xact3::adpcm
...
This also renames variables to be easier to understand (rather than
copying the naming scheme of the spec) and moves the calculation of
computable fields in the wave format header into the adpcm module.
2020-07-05 21:17:42 +02:00
Simon Bruder
36d3b5b6bf
Test internal functionality of ddr::ssq
2020-07-05 09:28:38 +02:00
Simon Bruder
5e8723c79a
Use byteoder’s LE type alias
2020-07-04 23:22:51 +02:00
Simon Bruder
19eebdc345
Implement Deref for newtypes
2020-07-04 23:17:17 +02:00
Simon Bruder
0ea4a20326
Avoid match for error handling where it makes sense
2020-07-04 20:53:21 +02:00
Simon Bruder
446ddb10e5
Replace / with / in batch output filename
2020-06-30 12:58:22 +02:00
Simon Bruder
d0d33de51e
Store time as u32
2020-06-30 12:48:47 +02:00
Simon Bruder
7e76a21609
Fix read_n_i32 function name
2020-06-30 12:21:11 +02:00
Simon Bruder
e7c84aed9c
Add batch conversion mode
2020-06-30 11:58:08 +02:00
Simon Bruder
d8af20a703
Fix difficulty mapping
2020-06-30 09:53:33 +02:00
Simon Bruder
b49425751e
Add musicdb support to ddr2osu
2020-06-30 09:37:27 +02:00
Simon Bruder
dc02995496
Move reading musicdb to own function
2020-06-30 08:31:07 +02:00
Simon Bruder
63d75fd6b6
Implement support for musicdb
2020-06-28 20:22:31 +02:00
Simon Bruder
56d36f2732
Avoid truncation
...
Error where truncation can occurr and prevent truncation in the future
by using `type::from()` (which checks for truncation) instead of `as
type` (which doesn’t).
2020-06-27 19:43:50 +02:00
Simon Bruder
e64ae362ef
Add unarc mode
2020-06-27 17:15:37 +02:00
Simon Bruder
bfd8ee75ed
Lower default osu hp drain
...
DDR stepcharts are harder due to how they are played. That means that a
hard DDR chart will have much less notes than a hard mania chart. Since
osu does not know that, giving it a (mania typical) hp drain will be
extremely hard with a DDR chart.
2020-06-27 10:59:53 +02:00
Simon Bruder
e3715c775b
Use same hitsound for holds and notes
2020-06-27 10:59:26 +02:00
Simon Bruder
e7e4a85d70
Add tests for ssq::{Row, PlayerRow}
2020-06-26 23:48:53 +02:00
Simon Bruder
7bbc416ac6
Add tests for part of utils
2020-06-26 23:48:34 +02:00
Simon Bruder
4f6c971ec7
Fix difficulty names
...
Expert ↔ Challenge
2020-06-26 21:21:38 +02:00
Simon Bruder
b7f60302ee
Implement freeze
2020-06-26 21:16:09 +02:00
Simon Bruder
dc27f999c5
Implement Display for ddr::ssq::Row
...
This makes debugging easier
2020-06-26 21:11:45 +02:00
Simon Bruder
60b74c7e97
Move join_display_values to utils
2020-06-26 21:10:51 +02:00
Simon Bruder
00b8c54022
Add context to errors
2020-06-26 13:44:11 +02:00
Simon Bruder
7d7fe618f0
Do not use log for errors
2020-06-26 13:43:54 +02:00
Simon Bruder
5a77d86fe7
Switch from nom to custom parser
...
The reason for the switch is mostly related to error handling (and me
being unable to unterstand how nom does it). Using byteorder and a few
handwritten helper functions for parsing makes error handling much
easier. It also allows me to return more helpful error messages.
2020-06-26 13:25:21 +02:00
Simon Bruder
2b0b66ddca
Use unwrap() for writing to cursor
...
Writing to cursors should never fail
2020-06-25 18:47:11 +02:00
Simon Bruder
8c8f954bbe
Use Option instead of Result where applicable
2020-06-25 13:25:47 +02:00
Simon Bruder
e921a150e1
Add error handling for unsupported audio formats
2020-06-25 00:04:10 +02:00
Simon Bruder
8afe245e05
Deduplicate unxwb code
2020-06-24 17:38:46 +02:00
Simon Bruder
7dbb8c1e62
Use std::fs::{read, write} for file operations
2020-06-24 17:20:38 +02:00
Simon Bruder
0c24fd0847
Better handling of anonymous sounds in wave banks
2020-06-23 20:16:51 +02:00
Simon Bruder
3dc24d58b5
Remove offset option
...
All tested charts do not have an offset. The former offset
implementation (which was not working) just cancelled out at charts with
a specific bpm value.
2020-06-23 17:31:03 +02:00
Simon Bruder
8556a4390f
Try to use second sound if sound not found
...
In wave banks with two entries the second sound should be the full song.
2020-06-23 14:34:49 +02:00